2013-08-26 37 views

回答

0

可以「跳」到一個特定的XML標籤,但依次讀取標籤。沒有可靠的方式跳過標籤而不閱讀。

-1

您最好使用Java StAX API。 Oracle Java Tutorial Site對如何使用它有很好的閱讀。從XML進行基本讀取/解析非常簡單。

+1

爲什麼要投票?如果有人投票,請留下評論,爲什麼你這樣做。否則答案不會變得更好。 – jboi

+0

這是爲什麼被投票? – keaplogik

2

如果你想跳轉到一個子節點,你必須使用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相反,它會在允許您訪問它之前閱讀整個文檔。

1

使用SAX不能跳轉到(跳過所有元素之前)某個元素。它按順序讀取所有元素並將它們返回給您的ContentHandler。您只需在ContentHandler中拋出異常,找到相關元素後,就可以跳過解析。

如果您正在尋找對XML元素的隨機訪問,那麼您應該明確地考慮由@Guillaume指出的DOM。