我有一个像下面这样的
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;