php operation xml

高洛峰
Release: 2016-12-24 11:09:25
Original
1879 people have browsed it

Data to be manipulated

<?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>
Copy after login

Several basic concepts of XML
1. Node: Node is the Node used in many programming languages ​​when processing XML. Node is a relatively broad concept, including elements, attributes, namespaces, and comments in XML. , text content, processing instructions, and the entire document belong to nodes, that is to say, each independent small part of the XML document is a node, is, So is name="XXXX", the tag is, and even the author's name David Flanagan is a text node.
2. Elements: Many programming languages ​​have XML processing. Node is a very broad concept. Because of the need to unify the API, there will not be too many methods for nodes. Elements are a subset of nodes. To put it simply It’s just tags like . Generally, there are many operation methods for elements.
3. Attributes: This is easier to understand. Things like XX="OO" in <> are all attribute nodes.
4. Escape characters: Similar to HTML, xml also has language-occupied symbols. If you want to use These special characters need to be escaped

php operation xml

DOMDocument object
I use the DOMDocument object to operate xml. I feel that it is more scientific than simpleXml. Of course, it is purely a personal feeling when using php on the first day. DOMDocument has several commonly used properties and methods.

php operation xml

Load xml

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

Read/traverse nodes and attributes

$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;;
    }
Copy after login

php operation xml

Of course, for many attributes, if you only want to read one, you can read by index through the item(index) method

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

You can also pass Powerful xpath query

还可以通过强大的xpath查询
Copy after login

Modify attributes/nodes

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);
Copy after login

php operation xml

For attribute modifications, you can directly access its nodeValue changes, or you can use the setAttribute method. Don’t forget to use save after making changes.

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

Add elements/attributes

$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);
Copy after login

Delete attributes/nodes

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

php operation xml

For more articles related to php operation xml, please pay attention to PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template