7.Create node
In DOM operations, 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)
[, string $value]: The value of the node
2. DOMNode DOMNode::appendChild ( DOMNode $newnode )
Append 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
php header ( 'Content-Type:text/html;charset=gb2312' ); $dom = new DOMDocument ( '1.0', 'utf-8 ' ); $dom->load ( 'demo01.xml' ); // First find the node object to be deleted $person = $dom->getElementsByTagName ( 'person' )->item ( 1 ); // Delete node $dom->documentElement->removeChild ( $person ); // Resave the file $dom->save ( 'demo01.xml' );
9, modify node
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 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
php header ( 'Content-Type:text/html;charset=gb2312' ); $dom = new DOMDocument ( '1.0', 'utf-8 ' ); $dom->load ( 'demo01.xml' ); // Add the id attribute for the second person // Find the second person $person = $dom->getElementsByTagName ( 'person' )->item ( 1 ); // Add id attribute $person->setAttribute ( 'id', 's102' ); // Save file $dom->save ( 'demo01.xml' );
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: additions, deletions and modifications
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