Home  >  Article  >  Backend Development  >  XML DOM in php(11)

XML DOM in php(11)

WBOY
WBOYOriginal
2016-08-08 09:27:45891browse

7. Create nodes

In DOM operation, addition, deletion and modification operations must find the parent node

1. DOMElement DOMDocument::createElement ( string $name [, string $value ] )

Create node and return a node object

String $name: The name of the node (element name)

                                                                                                                                                                           

2. DOMNode DOMNode::appendChild ( DOMNode $newnode )

Add child node

DOMNode $newnode: child node

3. int DOMDocument::save (string $filename)

Save the data in dom to the specified file

4. The documentElement attribute represents the root node in the dom model

<?<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> );
</span><span>//</span><span> 创建节点仅仅是表示在内存中创建出这个节点对象,但这个对象和我们之前的
</span><span>//</span><span> dom模型没有任何联系</span>
    $person = $dom->createElement ( <span>'</span><span>person</span><span>'</span><span> );
    $name </span>= $dom->createElement ( <span>'</span><span>name</span><span>'</span>, <span>'</span><span>huangliu</span><span>'</span><span> );
    $age </span>= $dom->createElement ( <span>'</span><span>age</span><span>'</span>, <span>'</span><span>18</span><span>'</span><span> );
</span><span>//</span><span> 将name和age做为子节点追加至person节点</span>
    $person-><span>appendChild ( $name );
    $person</span>-><span>appendChild ( $age );
</span><span>//</span><span> $dom->getElementsByTagName('persons')->item(0)->appendChild($newnode)
</span><span>//</span><span> 将person做了子节点追加至根节点</span>
    $dom->documentElement-><span>appendChild ( $person );
</span><span>//</span><span> 将dom中的所有数据重新保存到demo01.xml文件中</span>
    $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );

Result:

<person>
        <name>huangliu</name>
        <age><span>18</span></age>
    </person>

8. Delete node

DOMNode DOMNode::removeChild ( DOMNode $oldnode )

DOMNode $oldnode: the node object to be deleted

Example: Delete the following blue part

<?<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> );
</span><span>//</span><span> 首先找到要删除的节点对象</span>
    $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>1</span><span> );
</span><span>//</span><span> 将节点删除</span>
    $dom->documentElement-><span>removeChild ( $person );
</span><span>//</span><span> 重新保存文件</span>
    $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );

9. Modify nodes

DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )

DOMNode $newnode: new node

DOMNode $oldnode: original node

<?<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> );
</span><span>//</span><span> 找到要被替换掉的节点</span>
    $oldNode = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>2</span><span> );
</span><span>//</span><span> 创建出新的节点</span>
    $person = $dom->createElement ( <span>'</span><span>person</span><span>'</span><span> );
    $name </span>= $dom->createElement ( <span>'</span><span>name</span><span>'</span>, <span>'</span><span>songjiang</span><span>'</span><span> );
    $age </span>= $dom->createElement ( <span>'</span><span>age</span><span>'</span>, <span>100</span><span> );
    $person</span>-><span>appendChild ( $name );
    $person</span>-><span>appendChild ( $age );
</span><span>//</span><span> 用新节点替换原节点</span>
    $dom->documentElement-><span>replaceChild ( $person, $oldNode );
</span><span>//</span><span> 保存文件</span>
    $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );

10、 Save

? string DOMDocument::saveXML

Save the data in dom to a string variable

? int DOMDocument::save ( string $filename )

保 Save the data in the DOM to the specified file

11. Regarding the addition, deletion and modification of attributes

1. DOMAttr DOMElement::setAttribute( string $name , string $value )

Add attributes

String $name: Attribute name

String $value: attribute value

Add the attribute id='s102' to person

<?<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> );
</span><span>//</span><span> 为第二个人添加id属性
</span><span>//</span><span> 找到第二个人</span>
    $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>1</span><span> );
</span><span>//</span><span> 添加id属性</span>
    $person->setAttribute ( <span>'</span><span>id</span><span>'</span>, <span>'</span><span>s102</span><span>'</span><span> );
</span><span>//</span><span> 保存文件</span>
    $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );

2. DOMAttr DOMElement::setAttribute( string $name , string $value )

Modify attributes

String $name: Attribute name

String $value: attribute value

If a node does not have this attribute, it means adding the attribute (note the difference with the above)

If a node already has this attribute, it means modifying the attribute

3. bool DOMElement::removeAttribute (string $name)

Delete attributes (not delete nodes)

$name: attribute to be deleted

<?<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> );
</span><span>//</span><span> 删除第2个人的id属性
</span><span>//</span><span> 找到第二个人</span>
    $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>1</span><span> );
</span><span>//</span><span> 删除id属性</span>
    $person->removeAttribute(<span>'</span><span>id</span><span>'</span><span>);
</span><span>//</span><span> 保存文件</span>
    $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );

4. Get attributes

string DOMElement::getAttribute ( string $name )

string $name: attribute name

<?<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> );
</span><span>//</span><span> 查询第1个人的id属性
</span><span>//</span><span> 找到第1个人</span>
    $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>0</span><span> );
</span><span>//</span><span> 查询id属性</span>
    echo $person->getAttribute(<span>'</span><span>id</span><span>'</span>);

12 SimpleXML

PHP DOM: addition, deletion and modification

SimpleXML: Query

1. Read xml

1. simpleXMLElement simplexml_load_file (string $filename)

Read data from an xml file

String $filename:xml file name

2. SimpleXMLElement::__construct (string data)

Read data from a string

String data: string in xml format

If the data is saved to a file, use simplexml_load_file to read it

If the data is saved to a string, use the constructor method of the SimpleXMLElement class to read it

The above introduces the XML DOM (11) in PHP, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
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