2016-02-10 85 views
0

我正在使用XStream庫進行XML解析。我想知道庫是否允許直接使用索引跳轉到特定的節點。我可以使用XStream獲取已解析的XML索引

因此對於例如

<details> 
    <personal> 
     <basicInfo> 
     <firstName>John</firstName> 
     <lastName>Doe</lastName> 
     <phoneNumber>9999999999</phoneNumber> 
     <dateOfBirth>1990-01-01</dateOfBirth> 
     </basicInfo> 
     <address> 
     <street>random St.</street> 
     <city>City</city> 
     <stateProv>BC</stateProv> 
     <country>CA</country> 
     <postCode>12345</postCode> 
     </address> 
    </personal> 
    <personal> 
     <basicInfo> 
     <firstName>John2</firstName> 
     <lastName>Doe2</lastName> 
     <phoneNumber>9999999999</phoneNumber> 
     <dateOfBirth>1990-01-01</dateOfBirth> 
     </basicInfo> 
     <address> 
     <street>random St.2</street> 
     <city>City2</city> 
     <stateProv>BC2</stateProv> 
     <country>CA2</country> 
     <postCode>12345</postCode> 
     </address> 
    </personal> 
</details> 

對於該XML上述我想跳過第一<personal>...</personal> 和僅處理該第二節點。我可以使用索引來調用它嗎?

回答

0

XStream是一個簡單的庫,用於將對象序列化爲XML並返回。

我不確定你在這種情況下的流程是什麼意思,但是如果你的序列化POJO設置正確,包含一個「個人」節點列表。我不明白爲什麼你無法反序列化XML並在事後刪除不需要的節點。

+0

在上面的XML中,您可以看到我有兩個節點,名爲 有沒有辦法可以指定索引並直接獲取第二個索引。我不想處理第一個。在實際的情況下,我不想處理數百個記錄,並且只在特定索引上選擇一些節點,即記錄號碼9或記錄號碼228等。我不希望圖書館把所有的記錄都放在記憶裏。 –

+0

然後,XStream不是你想要的庫。嘗試查看XPath。或許,您可以使用XPath分離特定節點,然後使用XStream反序列化該節。 –

+0

但XPath只適用於DOM解析器。它將在整個文件加載整個文件之前佔據整個內存,然後才允許基於索引的節點讀取。 –

0

據我所知,vtd-xml是本地提供索引功能的唯一XML解析例程,名爲vtd + XML。