XML DOM in php (10), xmldom_PHP tutorial

WBOY
Release: 2016-07-13 10:01:48
Original
981 people have browsed it

XML DOM (10) in php, xmldom

1.PHP DOM (1)

The DOM in Php is different from JavaScript, and there is no need to add another node for attributes

2.Main categories

DOMDocument: Document class

DOMNodeList: node list class

DOMNode: Node class

DOMElement: element class

3. DOMDocument class

3.1 Create document object

DOMDocument::__construct ([ string $version [, string $encoding ]] )

[ string $version: version number

[, string $encoding ]]: character set

3.2. Load xml file

mixed DOMDocument::load ( string $filename)

string $filename: the name of the xml file to be loaded

3.3. Obtain nodes

DOMNodeList DOMDocument::getElementsByTagName ( string name )

String name: The node name to be obtained

Example: Demo.php

<?<span>php
    header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> );
</span><span>//</span><span> 利用php解析demo01.xml
</span><span>//</span><span> 实例化dom对象</span>
    $dom = <span>new</span><span> DOMDocument ();
</span><span>//</span><span> 加载xml文件</span>
    $dom->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> );
</span><span>//</span><span> 通过dom对象获取person节点,注意:这里返回值是一个DOMNodeList类对象</span>
    $persons = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span><span> );
</span><span>//</span><span> 共有几个person</span>
    echo <span>'</span><span>共有</span><span>'</span> . $persons->length . <span>'</span><span>个人<br></span><span>'</span>;      <span>//</span><span>输出共有两个人
</span><span>//</span><span> 选中索引为0的person,也就是第一个人</span>
    $person = $persons->item ( <span>0</span><span> );
</span><span>//</span><span> 在这个person下获取name节点,返回的仍然是一个DOMNodeList类对象</span>
    $names = $person->getElementsByTagName ( <span>'</span><span>name</span><span>'</span><span> );    
</span><span>//</span><span> 输出姓名</span>
echo $names->item ( <span>0</span> )->nodeValue . <span>'</span><span><br></span><span>'</span>;       <span>//</span><span>输出'张三'</span>
为什么要进行两次取的Nodelist呢?请参照上图,因为有两个节点
Copy after login

demo.xml

<?xml version=<span>"</span><span>1.0</span><span>"</span> encoding=<span>"</span><span>UTF-8</span><span>"</span>?>
<persons>
    <person id=<span>"</span><span>s101</span><span>"</span>>
        <name>zhangsan</name>
        <age><span>30</span></age>
    </person>
    <person>
        <name>wangwu</name>
        <age><span>18</span></age>
    </person>
</persons>
Copy after login

4. DOMNodeList class (the person above is the NodeList node)

1. Length

How many nodes are there in the current node list

2. DOMElement DOMNodelist::item (int $index)

Select the node with index index

int $index:index

5, DOMNode class

1. nodeValue node value

6, About reading attributes

1. bool DOMElement::hasAttribute (string $name)

Determine whether it has a certain attribute (only judge whether there is a certain attribute)

String $name:Attribute name

2. bool DOMNode::hasAttributes (void)

Determine whether it has attributes (return true as long as there are attributes)

3. string DOMElement::getAttribute ( string $name )

Get the attribute value of the specified attribute

String $name: attribute name

Example 2. Use coherent operation to output

<?<span>php
    $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> );
    $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> );
</span><span>//</span><span> 想得到第一个人的姓名</span>
    echo $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>0</span><span> )
    </span>->getElementsByTagName ( <span>'</span><span>name</span><span>'</span> )->item ( <span>0</span> )-><span>nodeValue;
输出:张三</span>
Copy after login

Example3:

<?<span>php
    header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> );
    $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> );
    $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> );
    $person </span>= $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>0</span><span> );
</span><span>//</span><span> 判断节点是否具有id属性</span>
    <span>if</span> ($person->hasAttribute ( <span>'</span><span>id</span><span>'</span><span> )) {
        echo </span><span>'</span><span>具有id属性</span><span>'</span><span>;
    } </span><span>else</span><span> {
        echo </span><span>'</span><span>没有id属性</span><span>'</span><span>;
    }
    echo </span><span>'</span><span><br></span><span>'</span><span>;
</span><span>//</span><span> 判断节点是否具有属性</span>
    <span>if</span> ($person-><span>hasAttributes ()) {
        echo </span><span>'</span><span>有属性</span><span>'</span><span>;
    } </span><span>else</span><span> {
        echo </span><span>'</span><span>没有任何属性</span><span>'</span><span>;
    }
    echo </span><span>'</span><span><br></span><span>'</span><span>;
</span><span>//</span><span> 得到第一个person的id属性值</span>
    echo $person->getAttribute ( <span>'</span><span>id</span><span>'</span> );
Copy after login

The previous example could only get one piece of data. Now I want to get complete information about everyone. How can I achieve this?

Example 4:

XML DOM in php (10), xmldom_PHP tutorialphp header ( 'content-type:text/html;charset=gb2312' ); $dom = new DOMDocument ( '1.0', 'utf-8 ' ); $dom->load ( 'demo01.xml' ); // Get all person nodes $persons = $dom->getElementsByTagName ( 'person' ); // Get the total number of people $count = $persons->length; for($i = 0; $i < $count; $i ) { // $person represents the i-th person $person = $persons->item ( $i ); echo 'th' . ($i 1) . 'Personal '; if ($person->hasAttribute ( 'id' )) { echo 'Student ID: ' . $person->getAttribute ( 'id' ); } echo 'Name: ' . $person->getElementsByTagName ( 'name' )->item ( 0 )->nodeValue; echo 'Age: ' . $person->getElementsByTagName ( 'age' )->item ( 0 )->nodeValue; echo '
'; } ?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/971770.htmlTechArticleXML DOM in php (10), xmldom 1.PHP DOM (1) DOM in Php is not the same as javascript Same, there is no need to add another node for attributes 2. Main class DOMDocument: Document class DOMNodeList: Node list...
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