这是我的xml:
<?xml version="1.0" encoding="UTF-8"?>
<check>
<val>
<Samsung>
<name value="galaxy" />
<name value="galaxy" />
<name value="galaxys" />
<id value="123" />
<id value="123" />
<name2 value="galaxy" />
</Samsung>
<htc>
<name value="galaxy" />
<name value="galaxy" />
<name value="galaxys" />
<id value="123" />
<id value="123" />
<name2 value="galaxy" />
</htc>
</val>
我的Xpath表达式为:
XPathExpression expr = XPathFactory.newInstance().newXPath()
.compile("//Samsung/name/@value");
在上面的xml <name value="galaxy" />
中有副本,所以我试图删除重复项。但是在我的代码中我得到的节点是value =“galaxys”..我不应该删除它。什么应该是正确的XPath语法,所以我可以用它来删除重复项,它应该匹配元素和属性值(例如:)整个xml中的?
答案 0 :(得分:0)
表达式“// Samsung / name / @ value”返回'Samsung'节点下所有'name'节点的value属性,因此它应返回'galaxys'
如果你想把条件放到只返回value ='galaxy'的节点,你可以使用这个表达式 //三星/名称[@值= '星系'] /
答案 1 :(得分:0)
使用xml
代码尝试以下内容:
<val>
<Samsung>
<name value="galaxy" />
<name value="galaxy" />
<name value="galaxys" />
<id value="123" />
<id value="123" />
<name2 value="galaxy" />
</Samsung>
<htc>
<name value="galaxy" />
<name value="galaxy" />
<name value="galaxys" />
<id value="123" />
<id value="123" />
<name2 value="galaxy" />
</htc>
</val>
<强> XPATH: 强>
//val/Samsung/child::*[@value = "galaxy"]
<强> 输出: 强>