Laden...

schleife für xml knoten

Erstellt von TheHacker vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.862 Views
T
TheHacker Themenstarter:in
43 Beiträge seit 2007
vor 16 Jahren
schleife für xml knoten

Ich bin totaler c# neuling, und hab mal ne frage:

Bisher habe ich mir daten aus xml so ausgelesen:

XmlDocument doc = new XmlDocument();
            doc.Load(dat);
            XmlElement root = doc.DocumentElement;
            XmlNode ressource = root.SelectSingleNode("//storage/res");

Jetzt möchte ich allerdings in einer schleife folgende "shi" knoten durchgehen, damit ich die infos innerhalb der einzelnen knoten auswerten kann.


<def>
<shi id "....">
<shitype>abc</shitype>
...
</shi>
<shi id "....">
<shitype>xyz</shitype>
...
</shi>
</def

Es ist nicht bekannt wieviele knoten davon vorhanden sind.
Jetzt ist meine Frage welche schleife ich da ab besten benutze, und wie ich die daten am besten dafür abrufe.

Danke schonmal, ich hoffe ihr versteht was ich meine.

W
558 Beiträge seit 2006
vor 16 Jahren

Ich schätze irgendwie so:

foreach (XmlNode xn in root.SubNodes)
{
}

grüße
webstarg

476 Beiträge seit 2004
vor 16 Jahren

hallo TheHacker,

benutz anstatt SelectSingleNode die Methode SelectNodes, dann bekommst du mit dem XPath-Ausdruck eine Auflistung der entsprechenden Nodes zurück.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

T
TheHacker Themenstarter:in
43 Beiträge seit 2007
vor 16 Jahren

Danke yellow. das bringt mich schonmal ein stückchen weiter, aber jetzt hab ich da ein problem.
Meine methode sieht jetzt so aus:

public static void schiffe(string thedat)
{
      XmlDocument doc = new XmlDocument();
      doc.Load("kbs/" + thedat);
      XmlNodeList nodelist;
      XmlElement wurzel = doc.DocumentElement;
      nodelist = wurzel.SelectNodes("//after//defender//ship");
      XmlNode typ;
      foreach(XmlNode ships in nodelist)
      {
           typ = ships.SelectSingleNode("//shipType");
         
          Console.WriteLine("SchiffTyp: " + typ.InnerXml);
      }
}

KOmischerweiße holt der sich die typ variable, nur beim 1. durchlauf, und bei allen anderen ist der inhalt von typ genau wie beim ersten, auch wenn da was ganz andres in der xml datei drinsteht. Hab ich da was vergessen??

Danke schonmal.

T
TheHacker Themenstarter:in
43 Beiträge seit 2007
vor 16 Jahren

sry für doppelpost, aber solange ich diese frage nicht beantwortet habe, kann ich nicht weitermachen,
Weiß denn niemand von denen die das lesen evtl was da falsch ist?