Home >Backend Development >PHP Tutorial >XML DOM in php(11)
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.