【问题标题】:Parsing into another xml format解析成另一种xml格式
【发布时间】:2013-04-26 10:36:18
【问题描述】:

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

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

【问题讨论】:

  • 为什么不能使用标准的 XML API,或者可能是 XSLT?我不会开始通过字符串操作尝试这个
  • 正如@BrianAgnew 所说。 XSLT 是必经之路。
  • Oracle XSLT Tutorial 可能是最好的起点。
  • 您好,谢谢您的回答。所以这个格式不是xml,而是xsl?我查了一下,但仍然不明白转型的努力有多大。这个 XSLT 工具可以自己做所有的工作吗,想说我把 xsl 文件作为输入,它把 xml 文件作为输出?

标签: java xml parsing


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多