使用XPath比较两个XML字段

4

我已经检查了所有与我的问题相关的问题,但没有一个能够解决我的问题。我的问题是我需要使用XPath比较两个XML节点的值。以下是XML:

<ExtenProp>
 <GenericField>
  <FieldKey>IsDiscount</FieldKey> 
  <FieldValue>True</FieldValue> 
  <Namespace /> 
  <ExtendedProperties /> 
</GenericField>

我需要检查 IsDiscount 是否可用,如果是,则值为 true。 我尝试进行如下检查:

//do:OrderForms/do:OrderForm/do:ExtendedProperties/do:GenericField[FieldKey="IsDiscount" and FieldValue="True"]

我已经检查过这个条件是否为真,但它却没有生效。有人能解释一下为什么吗?


在 XML 中是 ExtenProp/GenericField,在您的 XPath 中是 ExtendedProperties/GenericField 吗? - BlackJack
你能展示一个使用XPath的完整例子,以便演示其实际上是失败的吗? - BlackJack
2个回答

0

你使用的XPath表达式是正确的。我怀疑问题仅仅是缺少前缀 - 我想这些前缀映射到了默认命名空间URI - 在FieldKeyFieldValue上:

...../do:GenericField[do:FieldKey="IsDiscount" and do:FieldValue="True"] 

0

你必须从子元素中获取实际的文本内容:

…/do:GenericField[do:FieldKey/text()="IsDiscount" and do:FieldValue/text()="True"]

或者

…/do:GenericField[string(do:FieldKey)="IsDiscount" and string(do:FieldValue)="True"]

如果文本节点是元素的唯一内容,则无需上述任何操作,直接将元素与字面字符串进行比较应该会产生相同的结果。请纠正我如果我错了。 - har07

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接