2017-10-25 3 views
0

Ich erhalte XML-Datei von msmq und möchte die Anzahl der Elemente in jedem Knoten wissen. Mein XML sieht wie folgt aus. Der Modus count sollte 4 sein, und dann mache ich für eine Schleife, um sie in eine Sammlung/Liste zu setzen. Bitte helfen Sie mir zu diesem Thema.Wie bekomme ich die Anzahl der Elemente in xml-Knoten?

<?xml version="1.0"?> 
<Patient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Mode> 
    <string>51000153</string> 
    <string>51002040</string> 
    <string>51001475</string> 
    <string>51002670</string> 
    </Mode> 
</Patient> 

Antwort

0

Hier, wie Sie die Zählung bekam

XDocument doc = XDocument.Parse("xmlstr"); 
int count = doc.Elements("string").Count(); 

Sie diese Elemente in die Liste ohne Looping

IEnumerable<XElement> list = doc.Elements("string").ToList(); 
2
int count = xml.Descendants("string").Count(); 
0

Sie sollten unter XmlNodeList Art und GetElementsByTagName Methode setzen können, ist kleines Beispiel von MSDN

............. 
XmlElement root = doc.DocumentElement; // Doc is `XmlDocument` 
XmlNodeList elemList = root.GetElementsByTagName("title"); 
for (int i=0; i < elemList.Count; i++) 
{ 
    Console.WriteLine(elemList[i].InnerXml); 
} 

für mehr Informationen offen Link unten

XmlNodeList.Count Property

0

würde ich LINQ verwenden diese Aufgabe zu erfüllen.

Für die Zählung der Artikel:

XDocument doc = XDocument.Load("xmlfile.xml"); 
var count = doc.Descendants("Mode") 
       .Descendants("string") 
       .Count(); 

zum Einsetzen der Werte in eine IEnumerable:

XDocument doc = XDocument.Load("xmlfile.xml"); 
var list = doc.Descendants("Mode") 
       .Descendants("string") 
       .Select(node=>node.Value) 
       .ToList(); 
+0

Ein bisschen einem gemischten Ansatz hier. Geben Sie entweder den vollständigen Pfad mit Element()/Elements() an oder verwenden Sie einen Descendants() –

Verwandte Themen