C# 尝试获取值时,表达式必须计算为Xpath错误中的节点集
我在尝试获取具有Home和Auto值的节点时出错。 感谢您的帮助C# 尝试获取值时,表达式必须计算为Xpath错误中的节点集,c#,xml,xpath,C#,Xml,Xpath,我在尝试获取具有Home和Auto值的节点时出错。 感谢您的帮助 XElement coverage = vehicle.XPathSelectElement("s0:VehicleCoverage/s0:Coverages/[CoverageLimitName=('Auto' |'Home')]", namespaceManager); 我喜欢在下面提取节点 <Coverages> <Coverage> <CoverageLimitName>H
XElement coverage = vehicle.XPathSelectElement("s0:VehicleCoverage/s0:Coverages/[CoverageLimitName=('Auto' |'Home')]", namespaceManager);
我喜欢在下面提取节点
<Coverages>
<Coverage>
<CoverageLimitName>Home</CoverageLimitName>
<OptionalCode1>WY</OptionalCode1>
<OptionalCode2>Bodily Injury</OptionalCode2>
</CoverageLimitValue>
<Premium>166.00</Premium>
</Coverage>
<Coverage>
<CoverageLimitName>Auto</CoverageLimitName>
<CoverageLimitValue>
<OptionalCode1>T</OptionalCode1>
<OptionalCode2>Property Damage</OptionalCode2>
</CoverageLimitValue>
<Premium>88.00</Premium>
</Coverage>
<Coverage>
</Coverage>
....
</Coverage>
</Coverages>
家
WY
身体伤害
166
自动的
T
财产损失
88
....
我只想使用xpath,当CoverageLimitName作为home和auto时,我想获取整个coverage标记。我的猜测是您需要以下内容:
/s0:VehicleCoverage/s0:Coverages/s0:Coverage[s0:CoverageLimitName = 'Auto' or s0:CoverageLimitName = 'Home']
对于您显示的文档,它将返回两个Coverage
元素。(假定名称空间得到了正确处理。)
我们不得不猜测,因为您的示例XML文档缺少名称空间声明,而且您没有告诉我们您到底在寻找什么。请编辑您的问题,并给出您所显示的XML文档的XPath表达式的确切结果。此外,表达式和文档相互矛盾,因为XPath表达式中有前缀元素名称,但文档中没有。是的,正如@MathiasMüller所说,包括名称空间和结构正确的XML文档,否则我们只能猜测正确的结构。此外,正如问题中所示,您的XML实际上无效-第一个
Coverage
元素有一个结束标记CoverageLimitValue
但没有开始标记。以一个带有无效XML的问题为例,人们很难帮助你。@MathiasMüller:编辑了这个问题