我是Stax和XStream的新手。我試圖從大量的XML流中解開一些常見的元素(可能有150萬到250萬個解組元素)如何讓XStream解析來自StAX的部分輸入
我試圖通過Stax來解析流來獲取感興趣的元素,然後調用xStream將XML解析爲EndElement。
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(fis);
while (reader.hasNext()) {
if (reader.isStartElement() && reader.getLocalName().toLowerCase().equals("person")) {
break;
}
reader.next();
}
StaxDriver sd = new StaxDriver();
AbstractPullReader rd = sd.createStaxReader(reader);
XStream xstream = new XStream(sd);
xstream.registerConverter(new PersonConverter());
Person p = (Person) xstream.unmarshal(rd);
我創建了一個測試輸入 <Persons> <Person> <name>A</name> </Person> <Person> <name>B</name> </Person> <Person> <name>C</name> </Person> </Persons>
這樣做的問題,是我的第一個轉換器不叫。其次,我在Person中獲得了一個名爲「name」的CannotResolveClassException,並且XStream不創建我的Person對象。 我在代碼中錯過了什麼?
謝謝。這有效,但我不得不在我想解析的那個元素之前停止一個元素。如果人員可能包含一些可選元素作爲其第一個孩子會怎麼樣? StAX閱讀器API不提供「向前看」方法。 – Bassam