0

我找到了很多 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>

有没有办法在没有复杂的字符串操作的情况下做到这一点?

4

1 回答 1

0

首先,您的 XML 没有什么“特别”或“不寻常”的。这是沼泽标准。事实上,替代形式相当不寻常且非标准,因为 xsi:type 在标准中被定义为属性(您的第一种形式),而不是元素(您的第二种形式)。

使用 XSLT 很容易将第一种形式转换为第二种形式。XSLT 是一种允许您指定一组转换规则的语言。例如规则

<xsl:template match="@*">
  <xsl:element name="name()" namespace="{namespace-uri()">
    <xsl:value-of select="."/>
  </xsl:element>
</xsl:template>

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

于 2013-04-26T18:26:14.597 回答