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???要素Stateを含む要素のセットからテキスト「Failed」を取得しますが、要素からテキスト「Failed」が<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 に答える