2016-06-12 13 views
0
<list> 
    <person> 
     <nr>8</nr> 
     <name>Andrew</name> 
     <cash>1</cash> 
    </person> 
    <person> 
     <nr>9</nr> 
     <name>Bob</name> 
     <cash>2</cash> 
    </person> 
</list> 

XMLのために、このフォーマットを使用して、不思議: それはnamenrを取得するために検索することは可能ですか? 情報を編集したり追加したりする必要はありません。名前を検索してnrを入力してください。のJava読むその他の情報はXML

答えて

0

XPathを使用:

/*/person[name='Bob']/nr/text() 
0

これらの線に沿って何か:

public String getNR(File inputXml, String inputName) 
{ 

     String nr = null; 
     try 
     { 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new File(inputXml)); 
      XPathFactory xPathFactory = XPathFactory.newInstance(); 
      XPath xpath = xPathFactory.newXPath(); 

      XPathExpression expr = xpath.compile("//list/person/name[text()=" + "'" + inputName + "'" + "]/parent::*/nr"); 
      Object exprEval = expr.evaluate(doc, XPathConstants.NODESET); 
      if (exprEval != null && exprEval instanceof NodeList) 
      { 
       NodeList nodeList = (NodeList)exprEval; 
       if (nodeList.getLength() == 1) 
       { 
        nr = nodeList.item(0).getTextContent(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      ex.printStackTrace(); 
     } 

    return nr; 
} 

あなたがgetNR(inputxml, "Bob")を呼び出した場合、それは9を返す必要があります。