如何导出具有属性的重复XML元素

时间:2018-07-06 13:06:25

标签: xml excel xsd attributes

我有一个包含数据列表的Excel工作表,我想导出到XML:

https://imgur.com/a/dm3GT3l

有些ID相同,因为它们之间具有特殊的关系。我创建了一个如下所示的xml模式文档:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="terms">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="first-name" minOccurs="0" maxOccurs="unbounded" />
        <xs:element type="xs:string" name="name" minOccurs="0" maxOccurs="unbounded" />
        <xs:element type="xs:string" name="city" minOccurs="0" maxOccurs="unbounded" />
        <xs:element type="xs:string" name="gender" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="ID" type="xs:integer" />
    </xs:complexType>
  </xs:element>

在Excel中,我要使用以下模式将数据导出到XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<terms ID="1">
    <first-name>Peter</first-name>
    <name>xxx</name>
    <city>London</city>
    <gender>m</gender>
</terms>
<terms ID="1">
    <first-name>Lisa</first-name>
    <name>xxx</name>
    <city>New York</city>
    <gender>f</gender>
</terms>
<terms ID="2">
    <first-name>Dave</first-name>
    <name>xxx</name>
    <city>New York</city>
    <gender>m</gender>
</terms>

Excel禁止导出,因为该模式不可导出。如何导出重复属性?

1 个答案:

答案 0 :(得分:0)

找到了一个架构定义来导出我的数据,也许还对其他人感兴趣:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="terms">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="entry" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="entry">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ID">
                    <xs:complexType />
                </xs:element>
                <xs:element name="first-name" type="xs:string" />
                <xs:element name="name" type="xs:string" />
                <xs:element name="city" type="xs:string" />
                <xs:element name="gender" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="ID" />
        </xs:complexType>
    </xs:element>
</xs:schema>