我有一个XML文件,如下所示:
<MyObject>
<ID>1</ID>
<Name>Foo</Name1>
<Color>Blue</Color>
...
<CustomFields>
<CustomField>
<Name>cf1</Name>
<Type>boolean</Type>
<Value>true</Value>
</CustomField>
<CustomField>
<Name>cf2</Name>
<Type>interger</Type>
<Value>1</Value>
</CustomField>
...
</CustomFields>
</MyObject>
问题是当我在Excel中导入它时,Excel会创建2行:
ID , Name , Color , CustomField/Name , CustomField/Type , CustomField/Value
1 , Foo , Blue , cf1 , boolean , true
1 , Foo , Blue , cf2 , integer, 1
我希望每个自定义字段都有唯一的列。 所以我的想法是通过更改“CustomField”(没有“s”)标记名来转换源XML,使其唯一。我想将“CustomField”与“Name”标签内容连接起来。
所以,我将改造
<CustomField>
<Name>cf1</Name>
<Type>boolean</Type>
<Value>true</Value>
</CustomField>
<CustomField>
<Name>cf2</Name>
<Type>interger</Type>
<Value>1</Value>
</CustomField>
向
<CustomField_cf1>
<Name>cf1</Name>
<Type>boolean</Type>
<Value>true</Value>
</CustomField_cf1>
<CustomField_cf2>
<Name>cf2</Name>
<Type>interger</Type>
<Value>1</Value>
</CustomField_cf2>
问题在于我不知道如何使用子节点的值更改某些选定的标签名称。
我研究过XSLT,但显然我没有达到要求的水平。 所以我对任何解决方案持开放态度。
THX
答案 0 :(得分:0)
使用身份转换模板和模板
<xsl:template match="CustomField">
<xsl:element name="{name()}_{Name}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
答案 1 :(得分:0)