2016-06-12 65 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,只是想知道: 是否可以搜索name得到nr? 無需編輯或添加信息,只需要它搜索名稱並給我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