我有一些从REST调用返回的XML,如下所示:
<ArrayOfProperty xmlns=\"http://schemas.microsoft.com/HPCS2008R2/common\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">
<Property>
<Name>Id</Name>
<Value>17</Value>
</Property>
<Property>
<Name>StartTime</Name>
<Value>11/7/2012 9:13:50 PM</Value>
</Property>
<Property>
<Name>State</Name>
<Value>Failed</Value>
</Property>
我正在使用RestSharp API来帮助执行API调用并尝试使用linq-to-xml XElement.Parse来解析结果。我不确定如何获得状态的值,以便从本文档中我想做的事情:
XElement.Parse(XMLstring).Elements???
从包含元素State的元素集中获取文本“Failed”,但我希望<Value>Failed</Value>
元素中的文本“失败”。该值元素可以有多个值,但我总是想要与状态相关联的值。
有什么想法吗?
答案 0 :(得分:1)
您的XML包含默认命名空间,因此您需要定义它并在查询中使用。
XNamespace ns = "http://schemas.microsoft.com/HPCS2008R2/common";
var value = (string)XDocument.Parse(input)
.Descendants(ns + "Property")
.Where(p => (string)p.Element(ns + "Name") == "State")
.Elements(ns + "Value").FirstOrDefault();