我有以下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表达式
任何想法??
答案 0 :(得分:0)
也许您只是将ChangeTo
与ComponentId
混为一谈?如果只显示 您显示的文档片段,则以下XPath表达式将检索单个DataContainer
元素:
/Item/DataContainer[ComponentId = '12' and Type='Feature']
很明显,你没有展示minimal, complete and verifiable document - 这总是一个坏主意。
关于在评估路径表达式时遇到的错误:如果您实际上正在尝试评估全部大写的路径表达式,那么它将无效。 XML和XPath区分大小写,逻辑and
在某些实现中不能大写。
如果没有,可能是因为您的XPath库或框架仅支持XPath规范的一小部分。例如,它可能不支持谓词([
和]
之间的部分)。
回应评论:
在开头添加
//
或/
。 - eLRuLL
不,即使没有//
或/
,路径表达式也是有效的,这不会返回您所描述的错误类型。