Laden...

XML-Knoten mit XPath-Ausdruck ändern/einfügen

Erstellt von LonelyPixel vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.448 Views
L
LonelyPixel Themenstarter:in
333 Beiträge seit 2007
vor 15 Jahren
XML-Knoten mit XPath-Ausdruck ändern/einfügen

Hallo,

ich habe nun mal wieder recht viel mit XML-Daten zu tun (Excel 2003 XML) und stelle wieder mal fest, dass es recht aufwändig sein kann, mit etwas komplexeren XML-Dokumenten zu arbeiten, Werte zu finden und zu lesen oder Elemente und Attribute an bestimmten Stellen einzufügen. Das Auslesen klappt mit XPath-Ausdrücken schon ganz gut. So kann man locker über mehrere Ebenen springen, Attribute adressieren und global nach ganz bestimmten Konstellationen suchen (z.B. ss:Worksheet/ss:Table/ss:Row/ss:Cell[@ss:StyleID="s21"] oder o:Color/o:Index[text()=18]).

Wenn man nun aber dafür sorgen will, dass an einer bestimmten Stelle im XML-Dokument ein bestimmter Wert zu finden ist, muss man sich wieder mühsam vom Anfang dorthin hangeln, immer schön prüfen, ob das nächste Element existiert und es ggf. erst anlegen und einfügen, dann weiter zum nächsten Knoten usw., bis man letztlich endlich den Text oder Attributwert setzen kann. Hier wäre es viel angenehmer, wenn man einfach einen XPath-Ausdruck angibt, dem man einen Wert zuweisen will, und wenn der Pfad dorthin nicht vollständig existiert, wird er eben angelegt - mit allen Zwischenknoten und Attributwerten, die angegeben wurden. (Bestimmte Mengenausdrücke (Union, Größe der Ergebnismenge > 1), NOT- oder OR-Bedingungen sollte man hierfür ausschließen, da das Verhalten beim Anlegen der Struktur mglw. undefiniert wäre. Im Normalfall ist diese Einschränkung aber nicht relevant.)

Kennt jemand eine Möglichkeit, sowas zu machen? Hier im Forum und in der MSDN-Bibliothek habe ich nichts gefunden. Selber machen bedeutet einen XPath-Parser zu schreiben und damit (einmalig) sehr viel Arbeit.