我有數據這樣的事情如何跳轉到XML中的特定節點?
<A Name="">
</A>
<A Name="">
</A>
.....
XML我如何可以跳轉到某個特定節點,並讀它 - 就像第三標籤 - 一個用SAX解析器
我有數據這樣的事情如何跳轉到XML中的特定節點?
<A Name="">
</A>
<A Name="">
</A>
.....
XML我如何可以跳轉到某個特定節點,並讀它 - 就像第三標籤 - 一個用SAX解析器
可以「跳」到一個特定的XML標籤,但依次讀取標籤。沒有可靠的方式跳過標籤而不閱讀。
您最好使用Java StAX API。 Oracle Java Tutorial Site對如何使用它有很好的閱讀。從XML進行基本讀取/解析非常簡單。
如果你想跳轉到一個子節點,你必須使用DOM API而不是SAX。
// load the document
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File(filename));
// prepare result list
ArrayList<Element> res = new ArrayList<Element>();
// prepare to use xpath
XPath xpath = XPathFactory.newInstance().newXPath();
// read 3rd A element
NodeList list = (NodeList) xpath.compile("/A[3]")
.evaluate(doc, XPathConstants.NODESET);
// copy the DOM element in the result list
for (int i = 0; i < list.getLength(); i++) {
res.add((Element) list.item(i));
}
請注意,與SAX相反,它會在允許您訪問它之前閱讀整個文檔。
使用SAX不能跳轉到(跳過所有元素之前)某個元素。它按順序讀取所有元素並將它們返回給您的ContentHandler
。您只需在ContentHandler中拋出異常,找到相關元素後,就可以跳過解析。
如果您正在尋找對XML元素的隨機訪問,那麼您應該明確地考慮由@Guillaume指出的DOM。
爲什麼要投票?如果有人投票,請留下評論,爲什麼你這樣做。否則答案不會變得更好。 – jboi
這是爲什麼被投票? – keaplogik