Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试获取值时,表达式必须计算为Xpath错误中的节点集_C#_Xml_Xpath - Fatal编程技术网

C# 尝试获取值时,表达式必须计算为Xpath错误中的节点集

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

我在尝试获取具有Home和Auto值的节点时出错。 感谢您的帮助

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:编辑了这个问题