Excel中根据XML映射导出XML数据

来源:互联网 发布:c语言设计培训班 编辑:程序博客网 时间:2024/05/16 01:30

如果有这样一组Excel数据,如下图所示:

这里写图片描述

怎样才能把它变成xml形式的数据呢,其实Excel本身就提供了这样的导入导出功能,只是相关的xml映射需要自己根据不同的需求来写

第一步:选择数据菜单–XML–XML源,如图:

这里写图片描述

第二步:会在Excel的右侧弹出这样一个框,如图:点击xml映射按钮

这里写图片描述

会弹出这样一个添加xml映射的弹框,点击添加按钮,选中本地的xml映射文件

这里写图片描述

,然后点击确定,会看到右侧的弹框已经变成如图这样:

这里写图片描述

第三步:这个时候我们需要选中root,然后拖拽到A1单元格中,就变成如下这样:

这里写图片描述

最后一步:导出xml文件,同第一步类似,如图:

这里写图片描述

附:
当然这个过程里面最重要的其实就是那个映射文件,xsd格式的,如下:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">    <xsd:element name="Root">        <xsd:complexType>            <xsd:sequence>                <xsd:element minOccurs="0" maxOccurs="unbounded" name="Province">                    <xsd:complexType>                        <xsd:sequence>                            <xsd:element  name="City">                                <xsd:complexType>                                    <xsd:sequence>                                        <xsd:element  name="District">                                            <xsd:complexType>                                                <xsd:attribute name="name" type="xsd:string"/>                                                <xsd:attribute name="id" type="xsd:string"/>                                            </xsd:complexType>                                        </xsd:element>                                    </xsd:sequence>                                    <xsd:attribute name="name" type="xsd:string"/>                                    <xsd:attribute name="id" type="xsd:string"/>                                </xsd:complexType>                            </xsd:element>                        </xsd:sequence>                        <xsd:attribute name="name" type="xsd:string"/>                        <xsd:attribute name="id" type="xsd:string"/>                    </xsd:complexType>                </xsd:element>            </xsd:sequence>        </xsd:complexType>    </xsd:element></xsd:schema>

最后导出的xml如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Root>    <Province name="北京市" id="20001">        <City name="东城区" id="20005">            <District name="东直门" id="2000512"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="东城区" id="20005">            <District name="东直门外" id="2000513"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="东城区" id="20005">            <District name="沙滩" id="2000514"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="东城区" id="20005">            <District name="东单" id="2000515"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="东城区" id="20005">            <District name="东四" id="2000516"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="西城区" id="20006">            <District name="西直门" id="2000601"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="西城区" id="20006">            <District name="三里河" id="2000602"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="西城区" id="20006">            <District name="西城周边" id="2000603"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="西城区" id="20006">            <District name="展览路" id="2000604"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="朝阳区" id="20009">            <District name="东大桥" id="2000918"/>        </City>    </Province>    <Province name="北京市" id="20001">        <City name="朝阳区" id="20009">            <District name="工体" id="2000919"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="石家庄市" id="20091">            <District name="长安区" id="21046"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="石家庄市" id="20091">            <District name="桥东区" id="21047"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="新市区" id="22073"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="北市区" id="22074"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="南市区" id="22075"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="满城县" id="22076"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="清苑县" id="22077"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="涞水县" id="22078"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="阜平县" id="22079"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="保定市" id="20097">            <District name="徐水县" id="22080"/>        </City>    </Province></Root>

不过这并不是我最后想到的结果,理想的xml最好是这样:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Root>    <Province name="北京市" id="20001">        <City name="东城区" id="20005">            <District name="东直门" id="2000512"/>            <District name="东直门外" id="2000513"/>            <District name="沙滩" id="2000514"/>            <District name="东单" id="2000515"/>            <District name="东四" id="2000516"/>        </City>        <City name="西城区" id="20006">            <District name="西直门" id="2000601"/>            <District name="三里河" id="2000602"/>            <District name="西城周边" id="2000603"/>            <District name="展览路" id="2000604"/>        </City>        <City name="朝阳区" id="20009">            <District name="东大桥" id="2000918"/>            <District name="工体" id="2000919"/>        </City>    </Province>    <Province name="河北省" id="20088">        <City name="石家庄市" id="20091">            <District name="长安区" id="21046"/>            <District name="桥东区" id="21047"/>        </City>        <City name="保定市" id="20097">            <District name="新市区" id="22073"/>            <District name="北市区" id="22074"/>            <District name="南市区" id="22075"/>            <District name="满城县" id="22076"/>            <District name="清苑县" id="22077"/>            <District name="涞水县" id="22078"/>            <District name="阜平县" id="22079"/>            <District name="徐水县" id="22080"/>        </City>    </Province></Root>

这是我把导出的xml数据手动删除一些节点得到的,毕竟这个示例的数据量小,如果是全国所有省市区数据,手动删除冗余的节点肯定不行,耗时耗力,所以希望能通过修改上面的xsd文件来达到如上的效果,目前还没想到怎么改,如若哪位大神知道,还望不吝赐教,在此谢过。
PS:后来由于时间紧迫,还是通过手动更改的方式来达到想到的效果,虽然全国所有省市区数据有将近四千条,不过最后改下来也就四五个小时。。。

0 0