我可以在xpath上应用where条件吗?

时间:2013-12-18 07:46:00

标签: java xml xpath

我有一些看起来像

的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的方式,但这不是我想要的。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

当然,您可以选择属性:

//Property[@Key='Name']/@Value

为了将XPath结果限制为某一组节点,请使用[@attributeName='attributeValue']表示法。

此示例表达式返回Property属性等于name的所有Key个节点,并从此结果中选择Value属性。

为了获得实际值,您可以使用:

string(//Property[@Key='Name']/@Value)

这只返回aa(使用您的示例x​​ml)。

答案 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是一个客观类型的文档。