Mailinglisten-Archive |
Hallo Stephan Am 12.04.2012 15:06, schrieb Stephan Krauß: > Wenn ich folgendes XML in der Tabelle xml und in > der Spalte xml_text habe. > > -------------- > <person id="1"> > <firstname>Max</firstname> > <lastname>Mustermann</lastname> > <age>53</age> > </person> > <person id="2"> > <firstname>Paul</firstname> > <lastname>Jack</lastname> > <age>36</age> > </person> > <person id="3"> > <firstname>Max</firstname> > <lastname>Lego</lastname> > <age>20</age> > </person> > -------------- > > Wie kann ich einen Knoten oder Subknoten löschen ? > Wie kann ich einen Subknoten einfügen ? ich habe gerade noch mal unter Windows 7 mit MySQL 5.5.13 getestet. Dabei ist mir folgendes aufgefallen: SELECT UpdateXML('<a><b>ccc</b><b>dddd</b><d></d></a>', '//b', '<e>fff</e>') AS val3 Das funktioniert. SELECT UpdateXML( '<a><b>ccc</b><b>dddd</b><d></d></a>', '//b', '<e>fff</e>' ) AS val3 Hier gibt es zwei b-Elemente und es funktioniert nicht. @ alle: Es wäre nett, wenn ihr das mal in eurer Umgebung testen könntet. Ich verstehe das Mysql-Handbuch so, und XMLPath, dass hier beide b-Elemente ausgetauscht werden müssten. Nun aber zu Deiner Frage: Bei dem zitierten Code fehlt das Wurzelelement. Ein Element mit bestimmten Attribut findet man wie im Mysql-Handbuch beschrieben: Es ist auch möglich, ein Element basierend auf dem Wert eines oder mehrerer seiner Attribute zu vergleichen. Dies erfolgt mit der Syntax tag[@attribute="value"]. So entspricht beispielsweise der Ausdruck //b[@id="idB"] dem zweiten Element b im Fragment <a><b id="idA"/><c/><b id="idB"/></a>. Um einen Vergleich mit einem beliebigen Element mit attribute="value" durchzuführen, benutzen Sie den XPath-Ausdruck //*[attribute="value"]. http://dev.mysql.com/doc/refman/5.1/de/xml-functions.html?ff=nopfpls Allerdings sehe ich nicht den Sinn darin, diese Daten in einem Feld zu speichern. Den einzigen Sinn von XML in einem Feld wären für mich Ergänzungen zum Datensatz, für die es nicht lohnt eine neue Tabelle anzulegen, die man aber trotzdem strukturieren möchte. Bei einer solchen Struktur, wie von Dir vorgestellt, würde ich die Daten, wenn es unbedingt XML sein muss, direkt mit SimpleXML oder den DOM-Funktionen http://de2.php.net/manual/de/refs.xml.php verarbeiten. Oder mit meinem schon etwas älteren XML-Line http://www.media-palette.de/tools/xml-line/ Viele Grüße Peter
php::bar PHP Wiki - Listenarchive