2 Stimmen

Einfache und saubere Xml-Manipulation in PHP

Ich versuche, nach einer Möglichkeit zu suchen, xml in php leicht zu ändern. Die PHP-Dokumentation ist sehr verwirrend, wenn es darum geht, wie man Xml einfach manipulieren kann. Ich mag, wie SimpleXml ermöglicht für leicht zu finden, Tags/Attribute, aber es scheint nicht zu ermöglichen, leicht hinzufügen Kind Bäume, oder ersetzen Sie vorhandene.

Haben Sie einen Vorschlag, was Sie verwenden sollten?

Mein Anwendungsfall umfasst:

  • Suche nach bestimmten Tag-Elementen mit bestimmten Attributen.
  • Ersetzen eines gefundenen Elementteilbaums.
  • Verwendung von Kindbäumen, die aus Xml-Text generiert wurden.

9voto

Fabio Mora Punkte 5109

Ich benutze XPATH y SimpleXML um meine Datei zu ändern. Ein kleines Beispiel...

Die xml-Datei:

<?xml version="1.0"?>

<forum uri="http://myforum.org/index.php">

    <item id="1">
        <title>First Post!!!</title>
        <link>http://myforum.org/index.php/m/1</link>
        <description>hello I'm fabio</description>
    </item>

    <item id="2">
        <title>Re: Second post!!!</title>
        <link>http://myforum.org/index.php/m/2</link>
        <description>2nd good message.</description>
    </item>
</forum>

Und PHP-Handler:

<?php

$forum = simplexml_load_file('forum.xml');

/* some xpath EXAMPLES */   
/* catch all items in forum */
$result = $forum->xpath('/forum/item');
/* catch all links */
$result = $forum->xpath('//link');
/* search for "Re:" in title and returns the item's id */
$result = $forum->xpath('//item[contains(title, "Re:")]/@id');
/* catch > 10 length items and returns the item's title*/
$result = $forum->xpath('//item[string-length(description) > 10]/title');

$forum->item[1]->title['url']   = "http://goo.gl/";     /* this add a an attribute */
$forum->item[0]->foo            = "newnode";            /* this add content */
$forum->item[0]->foo['attrib']  = 10;                   /* this add a another value */
$forum->addChild('element_name', 'value');              /* this is a new element /*

 /* delete value */
unset($forum->item[0]);

// XML rendering
echo $forum->asXML();

0voto

SubniC Punkte 9087

Ich habe irgendwann die SimpleXML verwendet, um XML-Dateien aus PHP zu lesen und die DOM, um sie zu erstellen, lasse ich Sie hier ein paar nette liks über die Angelegenheit.

Viel Spaß!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X