<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。
答案 0 :(得分:0)
使用XPath:
/*/person[name='Bob']/nr/text()
答案 1 :(得分: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
。