Czytanie XML z różną długością w każdym node

0

Cześć , muszę odczytać dane z XML gdzie w każdym node jest różna ilość danych.Chodzi mi o coś takiego:

<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2017-05-01T14:46:30">
   <Tabela1>
      <Pole1>asd</Pole1>
      <Pole2>cos2</Pole2>
   </Tabela1>
   <Tabela1>
      <Pole1>zx</Pole1>
      <Pole2>sad</Pole2>
   </Tabela1>
   <Tabela1>
      <Pole1>as</Pole1>
      <Pole2>s</Pole2>
   </Tabela1>
   <Tabela1>
      <Pole1>asd</Pole1>
   </Tabela1>
   <Tabela1>
      <Pole1>as</Pole1>
   </Tabela1>
</dataroot>

Czy jedyna opcja do przeczytania takiego pliku to sprawdzania za każdym razem czy czytany element nie jest nullem ?

            XmlDocument doc = new XmlDocument();
            doc.Load("Tabela2.xml");
            foreach(XmlNode node in doc.DocumentElement)
            {
                if(node["Pole1"] != null)
                {
                    Console.WriteLine(node["Pole1"].InnerText);
                }
                else
                {
                    break;
                }
            }

            foreach (XmlNode node in doc.DocumentElement)
            {
                if (node["Pole2"] != null)
                {
                    Console.WriteLine(node["Pole2"].InnerText);
                }
                else
                {
                    break;
                }
            }

lub

            XmlDocument doc = new XmlDocument();
            doc.Load("Tabela2.xml");
            foreach(XmlNode node in doc.DocumentElement)
            {
                if(node["Pole1"] != null)
                {
                    Console.WriteLine(node["Pole1"].InnerText);
                }
                if (node["Pole2"] != null)
                {
                    Console.WriteLine(node["Pole2"].InnerText);
                }
            }

Czy istnieje jakieś inne rozwiązanie tego problemu ?

1

Może tak będzie lepiej

...
NameValueCollection d = new NameValueCollection();
foreach(XmlNode node in doc.DocumentElement)
{
    foreach(XmlNode n in node)
    {
        d.Add(n.Name, n.InnerText);
    }
}
foreach(string k in d.AllKeys)
{
    foreach(string v in d.GetValues(k))
    {
        Console.WriteLine("{0} {1}", k, v);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1