1

[C#] Kindknoten Finden und Attribut des Elternknotens bearbeiten

Frage von druckertinte druckertinte

Wir haben hier gerade ein Problem. Wir haben eine XML Datei, die wie folgt aufgebaut ist:

<?xml version="1.0" encoding="UTF-8"?>
<blabla>
  <elternknoten stufe="1">
    <eins>
      <item>blabla</item>
      <item>bla</item>
    </eins>
    <zwei>
      <item>blabla</item>
      <item>bla</item>
    </zwei>
  </elternknoten>
  <elternknoten stufe="1">
    <eins>
      <item>blabla</item>
      <item>bla</item>
    </eins>
    <zwei>
      <item>blabla</item>
      <item>bla</item>
    </zwei>
  </elternknoten>   
</blabla>

Jetzt muss das Programm, zb den Knoten mit dem Inhalt "bla" finden, und dann das Attribut "stufe" des in dem er sich befindet ändern. Wie soll das funktionieren?

Fragen zu gleichen Themen finden

Antworten (4)

  • 2
    Hilfreichste Antwort ausgezeichnet vom Fragesteller
    Antwort von derBeobachter derBeobachter

    Die Antwort heiß XPATH, frag deinen Freund Google danach...

    Kommentar von druckertinte druckertintedruckertinte

    Jop, XPATH war genau das, was ich benötigt habe!

    Kommentar von Michael339 Michael339Michael339

    Wenn Du unbedingt mit XPATH-Ausdrücken arbeiten willst (sicherlich bei umfangreicheren XML-Dateien als der vorliegenden überlegenswert), empfehle ich http://msdn.microsoft.com/de-de/library/bb675178.aspx

  • 0
    Antwort von Michael339 Michael339

    Moin,

    ich weiß zwar die Aufgabenstellung immer noch nicht genau, da "bla" bei Dir sowohl im Child-Element vom Knoten "eins" als auch "zwei" vorkommen kann... daher müsstest Du im folgenden die where Bedingung anpassen

    System.Xml.Linq.XDocument doc = XDocument.Load(@"Pfad\XMLFile1.xml");
     foreach (var f in doc.Root.Elements().Where((s) => s.Descendants("eins").Descendants().ElementAt(1).Value.Equals("bla")))
                {
                    f.SetAttributeValue("stufe", "123");
                }
    
                doc.Save(@"Pfad\XMLFile1_neu.xml");                 
    
  • 0
    Antwort von Mickeyman Mickeyman

    Zum abarbeiten eines XML-Dokuments würde ich dir linq empfehlen. Damit ist es recht einfach, darin zu suchen. Allerdings könnte dazu ein wenig Wissen in SQL-Abfragen nötig sein, um es schnell zu lernen.

    Hier gibt es eine kleine Beschreibung dazu, wie man das macht: http://code-inside.de/blog/2008/02/26/howto-linq-to-xml-daten-lesen/

    Zur Not gibst du bei Google einfach "linq xml" ein und dann wirst du schon was finden.

  • 0
    Antwort von druckertinte druckertinte

    Gutefrage.net hat schonwieder was verschluckt. Der letzte Absatz sollte so lauten:

    Jetzt muss das Programm, zb den Knoten (item) mit dem Inhalt "bla" finden, und dann das Attribut "stufe" des (elternknoten) in dem er sich befindet ändern. Wie soll das funktionieren?

    Die runden Klammern mit dem Spitzen austauschen.

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.