phpbar.de logo

Mailinglisten-Archive

[php] XML aus MySQL heraus versenden

[php] XML aus MySQL heraus versenden

Stephan info at suppenterrine.de
Fr Apr 13 08:34:12 CEST 2012


Hallo !

Danke für die Information.
Ich werde die Sache am Wochenende testen.
Leider habe ich nur MySQL 5.1.4x .

Mit freundlichen Grüßen

Stephan


Peter Bieling <net3 at media-palette.de> hat am 12. April 2012 um 18:49
geschrieben:

> 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
>
> --
> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> Informationen: http://www.phpbar.de
> http://lists.phpbar.de/mailman/listinfo/php
>

php::bar PHP Wiki   -   Listenarchive