2015-08-24 78 views
3

我已经检查了与我的问题相关的所有问题,但他们中的任何一个都无法解决我的问题。我的问题是我需要使用XPath比较两个XML节点值。下面是XML使用Xpath比较两个xml字段

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

我需要检查,如果IsDiscount可用,则值是真还是假。 我试图检查这样

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

,并检查这是否等于真的,但是这是行不通的。谁能解释为什么?

+0

在XML的'ExtenProp/GenericField'在你的XPath其'ExtendedProperties /GenericField'‽ – BlackJack

+0

你能表现出一个完整的EXA用XPath实际上失败了吗? – BlackJack

回答

0

您正处于XPath表达式的正确轨道。我怀疑问题是缺少只是我哪位想映射拖欠FieldKeyFieldValue命名空间URI-前缀:

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

不工作?还有其他想法吗? – User009

+0

它的工作,谢谢:) – User009

0

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

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

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

如果文本节点是元素的唯一内容,以上都不需要,直接比较元素和文字字符串应产生相同的结果。 CMIIW – har07