您的位置:首页 > 其它

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

2015-11-07 18:10 519 查看
如果有这样一组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:后来由于时间紧迫,还是通过手动更改的方式来达到想到的效果,虽然全国所有省市区数据有将近四千条,不过最后改下来也就四五个小时。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息