我的xpath有什么问题?

时间:2015-12-15 15:43:30

标签: javascript xml xpath

我有以下xml文档:

<Item>
  <DataContainer>
    <ComponentId>12</ComponentId>
    <ChangeTo>undefined</ChangeTo>
    <OperationCode>ADD</OperationCode>
    <ComponentTableName>invFeatureType</ComponentTableName>
    <ComponentColName>invFeatureTypeId</ComponentColName>
    <Type>Feature</Type>
    <PlanFeatureName>Long Distance</PlanFeatureName>
    <ToPlanFeatureName/>
  </DataContainer>
</Item>

当我应用以下xpath选择特定节点时:

"/Item/DataContainer[ChangeTo = '12' and Type='Feature']")

我收到以下错误:

  

未捕获DOMException:无法执行&#39;评估&#39; on&#39; Document&#39 ;:字符串&#39; / ITEM / DATACONTAINER [CHANGETO =&#39; 12&#39; AND TYPE =&#39; FEATURE&#39;]&#39;不是有效的XPath表达式

任何想法??

1 个答案:

答案 0 :(得分:0)

也许您只是将ChangeToComponentId混为一谈?如果只显示 您显示的文档片段,则以下XPath表达式将检索单个DataContainer元素:

/Item/DataContainer[ComponentId = '12' and Type='Feature']

很明显,你没有展示minimal, complete and verifiable document - 这总是一个坏主意。

关于在评估路径表达式时遇到的错误:如果您实际上正在尝试评估全部大写的路径表达式,那么它将无效。 XML和XPath区分大小写,逻辑and在某些实现中不能大写。

如果没有,可能是因为您的XPath库或框架仅支持XPath规范的一小部分。例如,它可能不支持谓词([]之间的部分)。

回应评论:

  

在开头添加///。 - eLRuLL

不,即使没有///,路径表达式也是有效的,这不会返回您所描述的错误类型。