Heim > Artikel > Backend-Entwicklung > PHP-Operation XML
Zu manipulierende Daten
<?xml version="1.0"?> <books> <book name="JavaScript: The Defiitive Guide" publisher="O'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'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,
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
3. Attribute: Dies ist einfacher zu verstehen.
4 um diese Sonderzeichen zu maskieren, wenn Sie sie verwenden möchten
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.
XML laden
$path=$_SERVER["DOCUMENT_ROOT"].'/books.xml'; $books=new DOMDocument(); $books->load($path);
Knoten und Attribute lesen/traversieren
$bookElements=$books->getElementsByTagName('book'); foreach($bookElements as $book){ foreach ($book->attributes as $attr) { echo strtoupper($attr->nodeName).' —— '.$attr->nodeValue.'<br/>'; } echo "AUTHOR: "; foreach ($book->getElementsByTagName('author') as $author) { echo $author->nodeValue.' '; } echo '<br/><br/>'; }
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('author') as $author) { $author->nodeValue=strtoupper($author->nodeValue); } } $books->save($path);
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('book'); #创建新元素 $newBook->setAttribute('name','PHP Objects, Patterns, and Practice');#创建新属性,方法一 $publisher=$books->createAttribute('publisher');#创建新属性,方法二 $publisher->nodeValue='Apress L.P'; $newBook->appendChild($publisher); #把属性添加到元素上 $author=$books->createElement('author');#创建子元素 $author->nodeValue='Matt Zandstra'; $newBook->appendChild($author);#把子元素添加到父元素上 $books->documentElement->appendChild($newBook);#添加整个节点 $books->save($path);
Attribut/Knoten löschen
$first=$bookElements->item(0); $first->removeAttribute('publisher'); $second=$bookElements->item(1); $second->parentNode->removeChild($second); $books->save($path);
Weitere PHP-Operationen im XML-Bereich Bitte Achten Sie auf die chinesische PHP-Website für Artikel!