2013-08-26 2 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, то вы должны окончательно рассмотреть DOM, как указано @Guillaume.