Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Operation XML

PHP-Operation XML

高洛峰
高洛峰Original
2016-12-24 11:09:251793Durchsuche

Zu manipulierende Daten

<?xml version="1.0"?>
<books>
    <book name="JavaScript: The Defiitive Guide" publisher="O&#39;Reilly Media, Inc.">
        <author>David Flanagan</author>
    </book>
    <book name="PHP anf MySQL Web Development" publisher="Perason Education">
        <author>Luke Welling</author>
        <author>Laura Thomson</author>
    </book>
    <book name="HTTP: The Defiitive Guide" publisher="O&#39;Reilly Media, Inc.">
        <author>David Courley</author>
        <author>Brian Totty</author>
    </book>
</books>

Mehrere Grundkonzepte von XML
1. Knoten ist der Knoten, der in vielen Programmiersprachen bei der Verarbeitung von XML verwendet wird. In XML gehören Elemente, Attribute, Namespaces, Kommentare, Textinhalte, Verarbeitungsanweisungen und das gesamte Dokument zu Knoten. Das heißt, jeder unabhängige kleine Teil des XML-Dokuments ist ein Knoten, > ; Ja, Ja, name=“XXXX“ ist auch, und sogar der Name des Autors David Flanagan ist ein Textknoten.
2. Element: Viele Programmiersprachen verfügen über ein sehr weit gefasstes Konzept. Aufgrund der Notwendigkeit, die API zu vereinheitlichen, wird es nicht zu viele Methoden für Knoten geben. Um es einfach auszudrücken: Tags wie haben im Allgemeinen viele Operationsmethoden für Elemente.
3. Attribute: Dies ist einfacher zu verstehen.
4 um diese Sonderzeichen zu maskieren, wenn Sie sie verwenden möchten

PHP-Operation XML

DOMDocument-Objekt
Ich verwende das DOMDocument-Objekt, um XML zu bedienen, und die Verwendung fühlt sich wissenschaftlicher an als simpleXml. Natürlich ist der erste Tag mit PHP ein rein persönliches Gefühl. DOMDocument verfügt über mehrere häufig verwendete Eigenschaften und Methoden.

PHP-Operation XML

XML laden

$path=$_SERVER["DOCUMENT_ROOT"].&#39;/books.xml&#39;;
    $books=new DOMDocument();
    $books->load($path);

Knoten und Attribute lesen/traversieren

$bookElements=$books->getElementsByTagName(&#39;book&#39;);
    foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            echo strtoupper($attr->nodeName).&#39; —— &#39;.$attr->nodeValue.&#39;<br/>&#39;;
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName(&#39;author&#39;) as $author) {
            echo $author->nodeValue.&#39; &#39;;
        }
        echo &#39;<br/><br/>&#39;;
    }

PHP-Operation XML

Wenn Sie bei vielen Attributen nur eines lesen möchten, können Sie natürlich den Index über die Methode item(index) lesen

echo $book->attributes->item(1)->nodeValue;

Sie können die Attribute auch über die leistungsstarke XPath-Abfrage ändern

还可以通过强大的xpath查询

/ Knoten

foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            #$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
            $attr->nodeValue=strtoupper($attr->nodeValue);
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName(&#39;author&#39;) as $author) {
            $author->nodeValue=strtoupper($author->nodeValue);
        }
    }
    $books->save($path);

PHP-Operation XML

kann direkt auf seinen Knotenwert zugreifen, um Attribute zu ändern, oder Sie können die setAttribute-Methode verwenden. Vergessen Sie nicht, save zu verwenden nachdem Änderungen vorgenommen wurden.

$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
$attr->nodeValue=strtoupper($attr->nodeValue);

Element/Attribut hinzufügen

$newBook=$books->createElement(&#39;book&#39;); #创建新元素
    $newBook->setAttribute(&#39;name&#39;,&#39;PHP Objects, Patterns, and Practice&#39;);#创建新属性,方法一
    $publisher=$books->createAttribute(&#39;publisher&#39;);#创建新属性,方法二
    $publisher->nodeValue=&#39;Apress L.P&#39;;
    $newBook->appendChild($publisher); #把属性添加到元素上
    $author=$books->createElement(&#39;author&#39;);#创建子元素
    $author->nodeValue=&#39;Matt Zandstra&#39;;
    $newBook->appendChild($author);#把子元素添加到父元素上
    $books->documentElement->appendChild($newBook);#添加整个节点
    $books->save($path);

Attribut/Knoten löschen

$first=$bookElements->item(0);
    $first->removeAttribute(&#39;publisher&#39;);
    $second=$bookElements->item(1);
    $second->parentNode->removeChild($second);
    $books->save($path);

PHP-Operation XML

Weitere PHP-Operationen im XML-Bereich Bitte Achten Sie auf die chinesische PHP-Website für Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:So verwenden Sie XML und YAMLNächster Artikel:So verwenden Sie XML und YAML