2014-07-10 3 views
0

У меня есть XML, который выглядит какSplit XML на основе значения тега члена

<?xml version="1.0"?> 
<company> 
    <staff> 
     <firstname>John</firstname> 
     <lastname>Player</lastname> 
     <nickname>JP</nickname> 
     <salary>1000</salary> 
    </staff> 
    <staff> 
     <firstname>Peter</firstname> 
     <lastname>Shaw</lastname> 
     <nickname>PS</nickname> 
     <salary>2000</salary> 
    </staff> 
</company> 

мне нужно выбрать только тогда, когда Firstname Питер есть мое о/р должно быть:

 <staff> 
      <firstname>Peter</firstname> 
      <lastname>Shaw</lastname> 
      <nickname>PS</nickname> 
      <salary>2000</salary> 
     </staff> 

Я с помощью XPath для него и образец кода выглядит следующим образом:

XPathFactory factory = XPathFactory.newInstance(); 
    XPath xpath = factory.newXPath(); 
    XPathExpression expr = xpath.compile("./company[staff/firstname = 'Peter']"); 

    Object result = expr.evaluate(doc, XPathConstants.NODESET); 
    System.out.println("Print " + result); //comes as [email protected] 
    NodeList nodes = (NodeList) result; 
    System.out.println("Size"+ nodes.getLength()); // comes as 0 
    for (int i = 0; i < nodes.getLength(); i++) { 
     System.out.println(nodes.item(i).getNodeValue()); 
    } 

Просьба представить Guidance

ответ

0

Ваше выражение XPath выберет <company>, у которого не менее один сотрудник с именем Peter in it.

То, что вы на самом деле хотите, чтобы выбрать на <staff> уровне:

company/staff[firstname = 'Peter'] 
Смежные вопросы