Données à manipuler
<?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>
Plusieurs concepts de base de XML
1 Node : Node est le Node utilisé dans de nombreux langages de programmation lors du traitement de XML. En XML, les éléments, les attributs, les espaces de noms, les commentaires, le contenu textuel, les instructions de traitement et l'ensemble du document appartiennent à des nœuds. Autrement dit, chaque petite partie indépendante du document XML est un nœud,
2. Element : De nombreux langages de programmation ont un traitement XML. Node est un concept très large. En raison de la nécessité d'unifier l'API, il n'y aura pas trop de méthodes pour les nœuds, et Element est un sous-ensemble de nœuds. Pour faire simple, les balises comme
3. Attributs : c'est plus facile à comprendre. Des éléments comme XX="OO" dans <> sont tous des nœuds d'attribut
4 Caractères d'échappement : similaire au HTML, XML a également une occupation de langage. pour échapper à ces caractères spéciaux lorsque vous souhaitez les utiliser
Objet DOMDocument
J'utilise l'objet DOMDocument pour faire fonctionner XML, et cela semble plus scientifique à utiliser que simpleXml , bien sûr, le premier jour d’utilisation de PHP est purement un sentiment personnel. DOMDocument possède plusieurs propriétés et méthodes couramment utilisées.
Charger XML
$path=$_SERVER["DOCUMENT_ROOT"].'/books.xml'; $books=new DOMDocument(); $books->load($path);
Lire/traverser les nœuds et les attributs
$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/>'; }
Bien sûr, pour de nombreux attributs, si vous ne souhaitez en lire qu'un seul, vous pouvez lire par index via la méthode item(index)
echo $book->attributes->item(1)->nodeValue;
Vous pouvez également modifier les attributs via la puissante requête XPath
还可以通过强大的xpath查询
/ Le nœud
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);
peut accéder directement à sa nodeValue pour modifier les attributs, ou vous pouvez utiliser la méthode setAttribute. N'oubliez pas d'utiliser save. après avoir apporté des modifications.
$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue)); $attr->nodeValue=strtoupper($attr->nodeValue);
Ajouter un élément/un attribut
$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);
Supprimer un attribut/un nœud
$first=$bookElements->item(0); $first->removeAttribute('publisher'); $second=$bookElements->item(1); $second->parentNode->removeChild($second); $books->save($path);
Plus d'opérations php liées au XML s'il vous plaît faites attention au site Web PHP chinois pour les articles !