Искать в xpath - PullRequest
       11

Искать в xpath

2 голосов
/ 22 сентября 2009

Предположим, это xml:

<lib>
<books type="paperback" name="A" />
<books type="pdf" name="B" />
<books type="hardbound" name="A" />
</lib>

Каким будет код xpath для поиска книг типа = "мягкая обложка" и имя = "А"? ТИА.

В настоящее время мой код выглядит так:

   import org.w3c.dom.*;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import java.io.IOException;
import org.xml.sax.SAXException;

public class demo {

  public static void main(String[] args) 
   throws ParserConfigurationException, SAXException, 
          IOException, XPathExpressionException {

    DocumentBuilderFactory domFactory = 
    DocumentBuilderFactory.newInstance();
          domFactory.setNamespaceAware(true); 
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse("xml.xml");
    XPath xpath = XPathFactory.newInstance().newXPath();
       // XPath Query for showing all nodes value
    String version="fl1.0";
    XPathExpression expr = xpath.compile("//books/type[@input="paperback"]/text()");

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) {
     System.out.println(nodes.item(i).getNodeValue()); 
    }
  }
}

Ответы [ 3 ]

2 голосов
/ 22 сентября 2009
/lib/books[@type='paperback' and @name='A']

Посмотрите здесь Если вы боретесь с синтаксисом xpath, у него есть несколько хороших примеров.

Кроме того, если вам просто нужна помощь с XML в целом и смежными технологиями, ознакомьтесь с руководством здесь

0 голосов
/ 01 августа 2011

Ответы выше хорошие ... Я хотел бы добавить ресурс. Лучший учебник по xpath, который я видел, это здесь .

0 голосов
/ 22 сентября 2009

Прямо сейчас вы, кажется, ищете что-то вроде <book><type input="paperback"/></book>, что явно не так. Ваше выражение xpath, вероятно, должно быть чем-то вроде // books [@ type = "paperback" и @ name = "A"] / text ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...