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

如果有这样一组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:后来由于时间紧迫,还是通过手动更改的方式来达到想到的效果,虽然全国所有省市区数据有将近四千条,不过最后改下来也就四五个小时。。。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 很高兴能够跟你聊天。关于你问的 kettle 导出xml 数据结构解析,可以通过 XML 解析器来解析 xml 数据。有多种 XML 解析器可以使用,比如 SAX 解析器、DOM 解析器、JAXP 解析器等等。 ### 回答2: kettle 导出XML 数据结构主要用于描述 ETL(Extract, Transform, Load)过程的任务和转换。以下是对 kettle 导出XML 数据结构解析的简要说明。 1. 转换描述:XML 数据结构的主要部分是描述转换的元素和步骤。转换是由一系列连续的步骤(steps)组成的。每个步骤描述了一个特定的数据处理操作,如从数据读取数据、执行转换、写入目标表等。每个步骤都有一个唯一的标识符和一组属性。 2. 连接描述:转换的步骤之间通过连接(hops)进行关联。连接描述了步骤之间的数据流方向和转换规则。每个连接都有一个源步骤和目标步骤的标识符,并可以包含一组条件或规则。 3. 输入输出描述:每个步骤都有相应的输入和输出描述。输入描述定义了一个步骤的输入数据来源,可以是之前步骤的输出或外部数据源。输出描述定义了一个步骤的输出数据目标,可以是下一个步骤的输入或输出到外部。 4. 数据字段描述:每个步骤的输入和输出描述都包含一个数据字段列表。数据字段描述每个字段的名称、类型、长度、格式等。这些字段用于描述数据的结构和类型,并在步骤之间进行数据传递和转换。 总之,kettle 导出XML 数据结构是一个详细描述 ETL 过程任务和转换的文档。它包含了转换的元素、步骤、连接以及输入输出描述和数据字段描述等信息。通过解析这个 XML 数据结构,我们可以了解和操作 ETL 过程的各个步骤和数据处理规则。 ### 回答3: Kettle是一款开源的ETL工具,常用于数据抽取、转换和加载。其导出XML数据结构为Kettle的作业和转换定义文件。 Kettle的XML数据结构具有以下特点: 1. 根节点:XML文件的根节点通常是"job"(表示作业定义文件)或"transformation"(表示转换定义文件),代表着整个XML文件的起始。 2. 节点结构:XML文件的每个节点代表着Kettle的一个组件,包括作业步骤(job entry)和转换步骤(transformation step)。每个组件都被嵌套在父节点内,形成层次结构。 3. 节点属性:每个节点都包含一些属性,用于描述该组件的相关信息,例如组件的名称、类型、位置、参数设置等。 4. 连接关系:Kettle的组件之间可以通过连接关系进行数据传递。在XML,连接关系通过在源组件和目标组件之间添加"hop"节点来表示,每个"hop"节点包含源组件和目标组件的引用。 5. 参数设置:对于每个组件,XML文件都包含了它们的参数设置、输入输出字段映射等详细信息,用于指导Kettle的执行过程。 通过解析Kettle导出XML数据结构,我们可以获得作业或转换的整体结构、各个组件的定义、属性设置和连接关系,以及每个组件的参数设置和输入输出字段映射等信息。这些信息能够帮助我们理解和分析Kettle作业或转换的执行流程,为后续的优化和调试工作提供指导。同时,通过解析XML数据结构,我们还可以将Kettle作业或转换的定义导入到其他系统,实现作业或转换的自动化部署和执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值