2010-10-04 92 views
0

我一直在玩XStream XML解析和我有點問題。在我需要解析的文件中,我有一個具有多個相同名稱的任意屬性的節點。節點是一個足球隊,屬性是每個球員的名字。Xstream重複屬性問題

<team home="Arsenal"> 
    <squad player="Manuel Almunia Rivero" player="Abou Diaby" player="Bacary Sagna" ... player="Robin van Persie"/> 
    <subs player="Carlos Vela" player="Theo Walcott"/> 
</team> 

我的問題是,當我嘗試和demarshall這個文件,我得到一個重複的屬性問題。我想要做的就是將這些字符串加載回List中,這樣我就可以維護團隊中的人員。這對於訂單等並不重要。 有人可以指出我如何遍歷每個屬性的正確方向,即使它們具有相同的名稱嗎? 感謝 克里斯

回答

1

你有兩個選擇:

  1. 文件與誰產生的文件,要求他們解決,他們有相同的名字(多重屬性的bug,你給的例子是不是一個bug格式良好的XML,因此不能期望XML處理器解析它)。

  2. 將一些在流上操作的東西寫成文本流並生成一些真實的XML,例如<squad><player>Manuel Almunia Rivero</player><player>Abou Diaby</player>...

第二是充滿,因爲有問題的種種警惕編寫自己的XML解析代碼(這是他們的錯誤是強迫你這樣做)的時候,所以如果你能得到的人生成文件來修復它,這就是要走的路(這會讓其他進程能夠使用它,並且畢竟這是他們的錯誤)。

+0

因此,如果我在理解您的解決方案時是正確的,那麼您建議獲取XML文件的副本,其中每個值(例如名稱,團隊等)都以節點的形式給出(例如,封裝在自己的標籤中),而不是作爲一個節點的屬性? – 2010-10-04 19:08:41

+0

這將工作。如果可能的話,讓生產者用真正的XML發送給你一些東西,而不是自己修復它。 – 2010-10-04 19:23:58

+0

感謝您的幫助。產生XML的人是我這個時代的成員,這是該項目的插件,因此我們沒有足夠的時間來研究正確的XML約定。上面的輸出看起來不錯,人們可讀,但是將序列化數據封裝每個屬性到自己的標籤中的正確方法是?感謝您的幫助和耐心。 – 2010-10-04 19:27:02