Austine Otieno
Austine Otieno

Reputation: 136

Iteration on XML tags in C#

How would code an iteration to loop through the parent tag on a xml file as below:

<collection>
     <parent>
        <child1>DHL</child1>
        <child2>9000000131</child2>
        <child3>ISS Gjøvik</child13>
        <child4>ISS Gjøvik</child4>
        <child5>ISS Gjøvik</child5>
        <child6>9999000000136</child6>
      </parent>
       <parent>
        <child1>DHL</child1>
        <child2>9000000132</child2>
        <child3>ISS Gjøvik</child13>
        <child4>ISS Gjøvik</child4>
        <child5>ISS Gjøvik</child5>
        <child6>9999000000136</child6>
      </parent>
      <parent>
        <child1>DHL</child1>
        <child2>9000000134</child2>
        <child3>ISS Gjøvik</child13>
        <child4>ISS Gjøvik</child4>
        <child5>ISS Gjøvik</child5>
        <child6>9999000000136</child6>
      </parent>
</collection>

I need to insert the value of child1 as the primary key into the DB.

Upvotes: 0

Views: 67

Answers (3)

jdweng
jdweng

Reputation: 34421

Using xml linq to parse everything

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            var results = doc.Descendants("parent").Select(x => new {
                child1 = (string)x.Element("child1"),
                child2 = (string)x.Element("child2"),
                child3 = (string)x.Element("child3"),
                child4 = (string)x.Element("child4"),
                child5 = (string)x.Element("child5"),
                child6 = (string)x.Element("child6")
            }).ToList();
        }
    }
}

Upvotes: 0

Saeb Amini
Saeb Amini

Reputation: 24400

Assuming your xml is in the string variable xml:

var xdoc = XDocument.Parse(xml);
foreach (var parentEls in xdoc.Root.Elements("parent"))
{
    string child1Value = parentEls.Element("child1").Value;
    // your logic using child1 value
}

Note that your xml is malformed - <child3> is closed by </child13>.

Upvotes: 0

Dave Mertens
Dave Mertens

Reputation: 31

Have you tried the XmlReader? What do you have so far? Please show us some code. Just a reminder, StackOverflow is a helpdesk, not a programming service.

I see DHL in one of the tags. If that refers to the postal delivery company, they have an API (SDK) that is easy to use from within .NET code..

If you want to use XML (de)serialization that I would suggest that you start reading the System.Xml.Serialization namespace documentation. Microsoft has provided more than enough documentation and examples.

Link to namespace docs: https://msdn.microsoft.com/en-us/library/system.xml.serialization(v=vs.110).aspx

Here are some examples that contains anything that you would need to deserialzation the xml document to a poco class: https://msdn.microsoft.com/en-us/library/58a18dwa(v=vs.110).aspx

Upvotes: 1

Related Questions