我有一些看起来像
的xml<LongDescription Name="Detailed Specifications">
<Group GroupName="Model">
<Property Key="Brand" Value="xx" />
<Property Key="Model" Value="ss" />
</Group>
<Group GroupName="Spec">
<Property Key="Name" Value="aa" />
</Group>
<Group GroupName="Features">
<Property Key="Features" Value="qq" />
</Group>
</LongDescription>
我希望将Value
的值设为Key='Name'
。在上面的xml中,答案是aa
。我可以通过简单的xpath表达式来完成吗?
我对xpath做了一些研究,我知道如何获取属性的值。但我不知道如何在xpath上应用where条件。在谷歌上网后,我只找到了如何通过where条件获取text value of a tag
的方式,但这不是我想要的。
提前感谢您的帮助。
答案 0 :(得分:1)
当然,您可以选择属性:
//Property[@Key='Name']/@Value
为了将XPath结果限制为某一组节点,请使用[@attributeName='attributeValue']
表示法。
此示例表达式返回Property
属性等于name的所有Key
个节点,并从此结果中选择Value
属性。
为了获得实际值,您可以使用:
string(//Property[@Key='Name']/@Value)
这只返回aa
(使用您的示例xml)。
答案 1 :(得分:0)
看看也许这可以帮到你。
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = null;
expr = xpath.compile("//" + fatherNode+ "[" + nodeToCompare+ "='" + value+ "']/" + node);
String resultat = (String) expr.evaluate(doc, XPathConstants.STRING);
其中doc是一个客观类型的文档。