簡體   English   中英

在C#中遍歷XML響應

[英]Iterating over an XML response IN C#

我有一個XML響應,其結構如下:

 <e:Parents>
  <d1p1:Parent>
    <d1p1:Name>A</d1p1:Name>
    <d1p1:Child>a1</d1p1:Child>
    <d1p1:Id>101</d1p1:Id>
  </d1p1:Parent>
  <d1p1:Parent>
    <d1p1:Name>A</d1p1:Name>
    <d1p1:Child>a2</d1p1:Child>
    <d1p1:Id>102</d1p1:Id>
   </d1p1:Parent>
   <d1p1:Parent>
    <d1p1:Name>B</d1p1:Name>
    <d1p1:Child>b1</d1p1:Child>
    <d1p1:Id>201</d1p1:Id>
  </d1p1:Parent>
  <d1p1:Parent>
    <d1p1:Name>B</d1p1:Name>
    <d1p1:Child>b2</d1p1:Child>
    <d1p1:Id>202</d1p1:Id>
   </d1p1:Parent>
 </e:Parents>

現在,基於給定的輸入(例如A a2),我需要獲取ID(例如102)。

在我的職能中,我試圖使用類似的東西

int getId(string str)                         // str = A a2
{
    int index = str.IndexOf(' ');
    string p = str.Substring(0, index);      //A
    string c = str.Substring(index);        //a2
    var parent = response.Parents.FirstOrDefault(e => e.Name == p && e.Child == c);
    return parent.Id;
}

它給我一個錯誤,說:

“無法從用法中推斷方法'System.Linq.Enumerables.FirstOrDefault(System.Collections.Generics.IEnumerable,System.Func)'的類型參數。嘗試顯式指定參數。”

我需要知道如何獲取基於父母和孩子的ID。

以下Linq表達式應為您提供所需的值:

XElement xmlSet = XElement.Parse (yourXmlStringHere);

// Will contain the <parent>..</parent> you want
var parentNode =
       xmlSet.Elements("d1p1:Parent")
             .First(e => e.Elements("d1p1:Name").First().Value == "B"
                      && e.Elements("d1p1:Child").First().Value == "a2");

// This will fetch the value - 102 in this case:
var value = parentNode.Elements("d1p1:Id").First().Value;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM