c# – 异常:XPath表达式计算为意外类型System.Xml.Linq.XAttribute

前端之家收集整理的这篇文章主要介绍了c# – 异常:XPath表达式计算为意外类型System.Xml.Linq.XAttribute前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个像下面这样的 XML文件
<Employees>
  <Employee Id="ABC001">
    <Name>Prasad 1</Name>
    <Mobile>9986730630</Mobile>
    <Address Type="Perminant">
      <City>City1</City>
      <Country>India</Country>
    </Address>
    <Address Type="Temporary">
      <City>City2</City>
      <Country>India</Country>
    </Address>
  </Employee>

现在我想要获取所有地址类型.

我尝试下面使用XPath,我得到例外.

var xPathString = @"//Employee/Address/@Type";
doc.XPathSelectElements(xPathString); // doc is XDocument.Load("xml file Path")

Exception: The XPath expression evaluated to unexpected type
System.Xml.Linq.XAttribute.

我的XPath有什么问题吗?

解决方法

你的XPath很好(虽然你可能希望它更具选择性),但你必须调整你的评估方式……

顾名思义,XPathSelectElement()只应用于选择元素.

XPathEvaluate()更通用,可用于属性.您可以枚举结果,或抓住第一个:

var type = ((IEnumerable<object>)doc.XPathEvaluate("//Employee/Address/@Type"))
                                    .OfType<XAttribute>()
                                    .Single()
                                    .Value;

猜你在找的C#相关文章