2012-02-02 4 views
2

Как я могу использовать Java Xpath, чтобы получить значение 2 «с» тега д и е в 2Java Xpath запрос

<a> 
    <b> 
     <c type="lol"> 
      <d>1</d> 
      <f>2</f> 
     </c> 
     <c type="lol"> 
      <d>2</d> 
      <f>2</f> 
     </c> 
      <c type="h"> 
      <d>v</d> 
      <f>d</f> 
     </c> 
    </b> 
</a> 

{ 
    DocumentBuilderFactory dBFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dB = dBFactory.newDocumentBuilder(); 
    Document doc = dB.parse(url);  
    System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); 
    XPathFactory factory = XPathFactory.newInstance(); 
    XPath xpath = factory.newXPath(); 
    XPathExpression expr=null; 
    String text= null; 
    expr= xpath.compile("//a/b/c[@type='lol']/d/text()");// this gets the first value 
    text = (String) expr.evaluate(doc, XPathConstants.STRING); 
    } 

Как я могу использовать Java Xpath, чтобы получить значение 2 «с» тега d и е, как 2

+0

Ваш вопрос мог бы сделать с подстройкой или два - XML ​​ENDTAG неправильно и образец XPath говорит «б» вместо д. Хороший ответ ниже, однако, я кое-что узнал сегодня;] – davidfrancis

ответ

5

Использование:

//a/b/c[@type='lol'][2]/d/text() 
+0

Спасибо, я тоже нашел решение. Просто сейчас .. Я пришел добавить свое решение, у (@ Кирилл) уже поставил решение :) –

+0

@tharanidharan, Добро пожаловать. –