1

我有一些从 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???从包含元素状态的元素集中获取文本“失败”,但我想要元素中的文本“失败” <Value>Failed</Value>。该值元素可以有多个值,但我总是想要与状态关联的值。

有任何想法吗?

4

1 回答 1

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();
于 2012-11-07T21:50:50.143 回答