我有以下架构:
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element name="transaction" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="id_number"/>
<xs:element type="xs:string" name="first_name"/>
<xs:element type="xs:string" name="last_name"/>
<xs:element type="xs:string" name="email"/>
<xs:element name="custom_field" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="id" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="action" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="amount"/>
<xs:element type="xs:string" name="action_type"/>
<xs:element type="xs:string" name="date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
当我按照此架构导入XML文件时,Excel将按如下方式布置数据:
我希望将值映射为以下代码:
注意行数是如何由action元素的数量决定的,而custom_field元素是映射到单独的列而不是行。
Excel有一些内置功能可以轻松控制吗?
我已经编写了VBA宏来循环遍历XML文件的元素并按照我想要的方式映射它,但它是处理器密集型的。我只是想看看有没有比我现在做的更好的方法。