我发现了许多xml解析示例,但它们无法帮助我使用我特殊的xml格式。 这是我不寻常的xml格式的一个例子
<states xsi:type="auto:InitialState" name="Anfang"/> <act name="Megadon" start="//@states.2" end="//@states.3"/>
不幸的是我无法使用它,我需要xml格式,如:
<states> <xsi:type>auto:InitialState</xsi:type> <name>Anfang</name> </states> <act> <name>Megadon</name> <start>//@states.2</start> <end>//@states.3</end> </act>
有没有办法在没有复杂的String操作的情况下执行此操作?
答案 0 :(得分:0)
首先,您的XML没有“特殊”或“不寻常”。这是沼泽标准。事实上,替代形式是相当不寻常和非标准的,因为xsi:type在标准中被定义为属性(您的第一个形式),而不是作为元素(您的第二个形式)。
使用XSLT将第一种形式转换为第二种形式很容易。 XSLT是一种允许您指定一组转换规则的语言。例如规则
<xsl:template match="@*">
<xsl:element name="name()" namespace="{namespace-uri()">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
会将属性转换为元素(这是你想要做的)。