Java在XML中读取其他信息

时间:2016-06-12 19:26:57

标签: java xml

<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。

2 个答案:

答案 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