解析为另一种xml格式

时间:2013-04-26 10:36:19

标签: java xml parsing

我发现了许多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操作的情况下执行此操作?

1 个答案:

答案 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>

会将属性转换为元素(这是你想要做的)。