2016-05-26 10 views
2

Ich versuche, ein untergeordnetes Element mit dem Tag-Namen Grund zu finden. Ich habe XML-Dokument, das im Grunde enthält eine Reihe von Elementen mit Entity-Namen. Reason-Tag befindet sich irgendwo innerhalb von Entity (zusammen mit anderen Elementen).Wählen Sie einen untergeordneten Knoten in XML mit einem bestimmten Namen mit C#

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); 
     } 
    } 
} 

Dies ist die Position des Reason-Elements.

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

Hat jemand Erfahrung damit?

+0

Was reasonList ist? Meinst du entityList? – Crowcoder

Antwort

3

So erhalten Sie alle Reason Elemente.

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); 
} 

Wenn Sie uns ein vollständigeres Beispiel Ihres XML geben, kann ich die Antwort verbessern.

Edit:

Wenn Sie XmlDocument wollen stattdessen verwenden Sie dies tun könnte:

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

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

Danke für die Antwort. :) Ich habe kein XML-Dokument in String-Form es kommt als XmlDocument. Sollte ich vielleicht eine Konvertierung von XmlDocument nach XDocument durchführen? @Nasreddine –

+0

Die Verwendung von 'XDocument' erleichtert das Parsen von XML. Sie können das Xml von XmlDocument nach XDocument laden: 'XDocument.Parse (responseDocument.InnerXml);' – Nasreddine

Verwandte Themen