2016-05-26 4 views
2

タグ名理由の子要素を見つけようとしています。 私は基本的にエンティティ名を持つ要素の束を含んでいるXML文書を持っています。 理由タグは、他の要素とともにEntityの内側のどこかにあります。C#を使用して特定の名前のXMLで子ノードを選択します。

void IParseResponse.ParseResponseData(XmlDocument responseDocument) 
{ 
    List<string> reasons = new List<string>(); 
    var reasonValue = ""; 
    var entityList = responseDocument.GetElementsByTagName("Entity"); 

    if (entityList != null) 
    { 
     foreach (XmlNode reason in entityList) 
     { 
      reasonValue = //look into current Entity element, find Reason in it and get it's inner text. 
      reasons.Add(reasonValue); 
     } 
    } 
} 

これは理由要素の場所です。

<Entity> 
    <WatchList> 
    <Match ID="1"> 
     <MatchDetails> 
      <Reason> 

誰もこの経験がありますか?

+0

reasonListは何ですか?あなたはentityListを意味しますか? – Crowcoder

答えて

3

すべてのReason要素を取得する方法は次のとおりです。

var xml = "<Entity> <WatchList><Match ID=\"1\"><MatchDetails><Reason>asdasd</Reason></MatchDetails></Match></WatchList></Entity>"; 

var x = XDocument.Parse(xml); 
var reasons = x.Descendants("Reason").ToList(); 
foreach (var reason in reasons) 
{ 
    Console.WriteLine(reason.Value); 
} 

もっと完全なXMLの例をお伝えいただければ、私はその答えを改善することができます。

編集:

あなたの代わりにXmlDocumentオブジェクトを使用する場合は、この操作を行うことができます:

XmlNodeList nodes = responseDocument.GetElementsByTagName("Reason"); 

for (int i = 0; i < nodes.Count; i++) 
{ 
    Console.WriteLine(nodes[i].InnerText); 
} 
+0

お返事ありがとうございます。 :)私はXmlDocumentとして提供される文字列形式のXML文書を持っていない。多分XmlDocumentからXDocumentへの変換を行うべきでしょうか? @Nasreddine –

+0

'XDocument'を使うと、XMLをパースするのがずっと簡単になります。 XmlをXmlDocumentからXDocumentにロードするには、次のようにします: 'XDocument.Parse(responseDocument.InnerXml);' – Nasreddine

関連する問題