如何使用xpath:
下面的Gender按性别检索具有单个属性值的Psinfo对象<?xml version="1.0" encoding="UTF-8"?>
<Employees>
<Employee>
<Psinfo>
<Name>Jhon</Name>
<Gender xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string"
>Male</Gender>
<Empsal xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string"
>95572553</Empsal>
</Psinfo>
<Psinfo>
<Name>David</Name>
<Gender xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string"
>Male</Gender>
<Empsal xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string"
>1000000</Empsal>
</Psinfo>
</Employee>
</Employees>
我尝试使用此表达式使用xpath:
/Employees/Employee/Psinfo[contains(Gender,'Male')]
和以下Java代码:
final NodeList list = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < list.getLength(); i++) {
final Node node1 = list.item(i);
// System.out.println(node.getNodeName().getTextContent());
final String result1 = (String) expr.evaluate(node1, XPathConstants.STRING);
//but instead of getting individual tag values, giving whole value as "JhonMale95572553
}
我期望每次迭代都有一个属性值
Jhon
Male
95572553
答案 0 :(得分:1)
使用此XPath表达式:
//Psinfo[contains(Gender,'Male')]
答案 1 :(得分:0)
XML中没有名为S36B
的元素,因此结果为空。
更正XPath表达式后编辑:
表达式字符串是正确的。因此,您未向我们展示的代码中必定存在错误(例如,您如何构造文档,如何构建XPath表达式对象等)。