在 Java 中使用 xpath 从节点列表获取属性
Get attributes from nodelist using xpath in Java
XML
<Employees>
<Employee id="1" name="xyz">
<Employee id="2" name="abc">
</Employees>
我可以用xpath表达式得到Employee节点列表
XPathExpression expr=xpath.compile("/Employees/Employee");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
如何从列表中的每个节点获取属性id、name。
尝试将您的 xpath 表达式更改为
/Employees/Employee/@id
你不能问一个列表 returning 2 元组 (id, name)
但是你可以把它放在两个单独的节点列表中:
XPathExpression expr1 = xpath.compile("/Employees/Employee/@id");
NodeList nodes1 = (NodeList) expr1.evaluate(doc, XPathConstants.NODESET);
XPathExpression expr2 = xpath.compile("/Employees/Employee/@name");
NodeList nodes2 = (NodeList) expr2.evaluate(doc, XPathConstants.NODESET);
但是,如果只有一个列表如此重要,则可以采取一些解决方法,例如将两个属性值连接成一个类似 csv 的字符串:
XPathExpression expr = xpath.compile("concat(/Employees/Employee/@id, ';', /Employees/Employee/@name)");
这将 return 一个包含 2 个节点的列表:
"1;xyz"
"2;abc"
XML
<Employees>
<Employee id="1" name="xyz">
<Employee id="2" name="abc">
</Employees>
我可以用xpath表达式得到Employee节点列表
XPathExpression expr=xpath.compile("/Employees/Employee");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
如何从列表中的每个节点获取属性id、name。
尝试将您的 xpath 表达式更改为
/Employees/Employee/@id
你不能问一个列表 returning 2 元组 (id, name) 但是你可以把它放在两个单独的节点列表中:
XPathExpression expr1 = xpath.compile("/Employees/Employee/@id");
NodeList nodes1 = (NodeList) expr1.evaluate(doc, XPathConstants.NODESET);
XPathExpression expr2 = xpath.compile("/Employees/Employee/@name");
NodeList nodes2 = (NodeList) expr2.evaluate(doc, XPathConstants.NODESET);
但是,如果只有一个列表如此重要,则可以采取一些解决方法,例如将两个属性值连接成一个类似 csv 的字符串:
XPathExpression expr = xpath.compile("concat(/Employees/Employee/@id, ';', /Employees/Employee/@name)");
这将 return 一个包含 2 个节点的列表:
"1;xyz"
"2;abc"