Home > Mobile >  How do I get a specific element in a XML document?
How do I get a specific element in a XML document?

Time:09-19

I have a XML file that looks like this:

<Info>
  <ID>1</ID>
 <Result>
   <ID>2</ID>
 </Result>
</Info>

I want to count how many Info/Result/ID I have in this file. I am doing this:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("myFile.xml");
xmlNodeList MyList = xmlDoc.GetElementsByTagName("Info/Result/ID");
int totalCount = MyList.Count;

// other logic...

The method GetElementsByTagName does not find any "ID"-field. I want to get the "ID = 2".

How do I do that?

CodePudding user response:

To count all the nodes in "Info/Result/ID" path use this..

var count = xmlDoc.SelectNodes("Info/Result/ID")?.Count ?? 0;

To process these nodes

var nodes = xmlDoc.SelectNodes("Info/Result/ID");
foreach (XmlNode node in nodes) {
    var idValue = node.InnerText
    // do something
}

CodePudding user response:

Got it working, here´s how:


public static void MyCountExample(string myXml, out int myID)

    {
        var stream = new MemoryStream(Encoding.UTF8.GetBytes(myXml ?? ""));

        var reader = XmlReader.Create(stream);
        myID= 0;

        reader.IsStartElement("Info");
        while (!reader.EOF)
        {
            if (reader.ReadToFollowing("Result"))
            {
                if (reader.ReadToDescendant("ID"))
                {
                        myID  ;
                    
                    else
                    {
                        return somethingElse();
                    }
                ......
  • Related