2013-04-26 88 views
0

我發現了很多xml解析示例,但它們無法幫助我處理特殊的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> 

有一個沒有複雜的字符串操作做到這一點?

+5

爲什麼不能使用標準的XML API或XSLT?我不會嘗試通過字符串操作 – 2013-04-26 10:38:38

+1

作爲@BrianAgnew說。 XSLT是要走的路。 – 2013-04-26 10:39:51

+0

[Oracle XSLT教程](http://docs.oracle.com/javase/tutorial/jaxp/xslt/transformingXML.html)可能是啓動它的最佳地點。 – AurA 2013-04-26 11:10:34

回答

0

首先,關於您的XML沒有什麼「特殊」或「不尋常」。這是沼氣標準。事實上,替代形式是非常不尋常和非標準的,因爲xsi:type在標準中被定義爲屬性(你的第一種形式),而不是作爲一個元素(你的第二種形式)。

使用XSLT很容易將第一種形式轉換爲第二種形式。 XSLT是一種允許您指定一組轉換規則的語言。例如,規則

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

將把屬性轉換爲元素(這是你想要做的)。

相關問題