7.建立節點
在dom操作中,增刪改作業必須要找父節點
1、DOMElement DOMDocument::createElement ( string $name [, string $value ] )
建立節點 ,回傳的是一個節點物件
string $name :節點的名稱 (元素名稱)
[, string $value ] :節點的值
2、DOMNode DOMNode::appendChild ( DOMNode $newnode )
追加子節點
DOMNode $newnode:子節點
3、int DOMDocument::save ( string $filename )
將dom中的資料儲存到指定的檔案中
4、documentElement屬性,表示dom模型中的根節點
<?<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> );
結果:
<person> <name>huangliu</name> <age><span>18</span></age> </person>
8、 刪除節點
DOMNode DOMNode::removeChild ( DOMNode $oldnode )
DOMNode $oldnode:要刪除的節點物件
範例:把以下藍色部分給刪除掉
<?<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、修改節點
DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
DOMNode $newnode :新節點
DOMNode $oldnode :原節點
<?<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、 保存
? string DOMDocument::saveXML
將dom中的資料儲存至字串變數中
? int DOMDocument::save ( string $filename )
將dom中的資料儲存至指定的檔案中
11、關於屬性的增刪改
1、DOMAttr DOMElement::setAttribute( string $name , string $value )
新增屬性
string $name :屬性名稱
string $value :屬性值
為person加上id='s102'這個屬性
<?<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 )
修改屬性
string $name :屬性名稱
string $value :屬性值
如果一個節點沒有此屬性,表示新增屬性 (注意與上面的差異)
如果一個節點已經存在這個屬性,表示修改屬性
3、bool DOMElement::removeAttribute ( string $name )
刪除屬性(不是刪除節點)
$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> 删除第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、取得屬性
string DOMElement::getAttribute ( string $name )
string $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:增刪改
SimpleXML:查詢
一、 讀取xml
1、 simpleXMLElement simplexml_load_file ( string $filename)
從某個xml檔案讀取資料
string $filename:xml檔名
2、SimpleXMLElement::__construct ( string data)
從某個字串中讀取資料
String data:xml格式的字串
如果資料儲存到檔案中,使用simplexml_load_file讀取
如果資料儲存到字串中,使用SimpleXMLElement類別的建構方法讀取
以上就介紹了php中的XML DOM(11),包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。