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模型中的根節點
<?php
header ( 'Content-Type:text/html;charset=gb2312' );
$dom = new DOMDocument ( '1.0', 'utf-8' );
$dom->load ( 'demo01.xml' );
// 創建節點僅僅是表示在內存中創建出這個節點對象,但這個對象和我們之前的
// dom模型沒有任何聯系
$person = $dom->createElement ( 'person' );
$name = $dom->createElement ( 'name', 'huangliu' );
$age = $dom->createElement ( 'age', '18' );
// 將name和age做為子節點追加至person節點
$person->appendChild ( $name );
$person->appendChild ( $age );
// $dom->getElementsByTagName('persons')->item(0)->appendChild($newnode)
// 將person做了子節點追加至根節點
$dom->documentElement->appendChild ( $person );
// 將dom中的所有數據重新保存到demo01.xml文件中
$dom->save ( 'demo01.xml' );
結果:
<person>
<name>huangliu</name>
<age>18</age>
</person>
8、 刪除節點
DOMNode DOMNode::removeChild ( DOMNode $oldnode )
DOMNode $oldnode:要被刪除的節點對象
示例:把以下藍色部分給刪除掉
<?php
header ( 'Content-Type:text/html;charset=gb2312' );
$dom = new DOMDocument ( '1.0', 'utf-8' );
$dom->load ( 'demo01.xml' );
// 首先找到要刪除的節點對象
$person = $dom->getElementsByTagName ( 'person' )->item ( 1 );
// 將節點刪除
$dom->documentElement->removeChild ( $person );
// 重新保存文件
$dom->save ( 'demo01.xml' );
9、修改節點
DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
DOMNode $newnode :新節點
DOMNode $oldnode :原節點
<?php
header ( 'Content-Type:text/html;charset=gb2312' );
$dom = new DOMDocument ( '1.0', 'utf-8' );
$dom->load ( 'demo01.xml' );
// 找到要被替換掉的節點
$oldNode = $dom->getElementsByTagName ( 'person' )->item ( 2 );
// 創建出新的節點
$person = $dom->createElement ( 'person' );
$name = $dom->createElement ( 'name', 'songjiang' );
$age = $dom->createElement ( 'age', 100 );
$person->appendChild ( $name );
$person->appendChild ( $age );
// 用新節點替換原節點
$dom->documentElement->replaceChild ( $person, $oldNode );
// 保存文件
$dom->save ( 'demo01.xml' );
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'這個屬性
<?php
header ( 'Content-Type:text/html;charset=gb2312' );
$dom = new DOMDocument ( '1.0', 'utf-8' );
$dom->load ( 'demo01.xml' );
// 為第二個人添加id屬性
// 找到第二個人
$person = $dom->getElementsByTagName ( 'person' )->item ( 1 );
// 添加id屬性
$person->setAttribute ( 'id', 's102' );
// 保存文件
$dom->save ( 'demo01.xml' );
2、 DOMAttr DOMElement::setAttribute( string $name , string $value )
修改屬性
string $name :屬性名
string $value :屬性值
如果一個節點沒有此屬性,表示添加屬性 (注意與上面的區別)
如果一個節點已經存在這個屬性,表示修改屬性
3、bool DOMElement::removeAttribute ( string $name )
刪除屬性(不是刪除節點)
$name:要被刪除的屬性
<?php
header ( 'Content-Type:text/html;charset=gb2312' );
$dom = new DOMDocument ( '1.0', 'utf-8' );
$dom->load ( 'demo01.xml' );
// 刪除第2個人的id屬性
// 找到第二個人
$person = $dom->getElementsByTagName ( 'person' )->item ( 1 );
// 刪除id屬性
$person->removeAttribute('id');
// 保存文件
$dom->save ( 'demo01.xml' );
4、獲取屬性
string DOMElement::getAttribute ( string $name )
string $name:屬性名
<?php
header ( 'Content-Type:text/html;charset=gb2312' );
$dom = new DOMDocument ( '1.0', 'utf-8' );
$dom->load ( 'demo01.xml' );
// 查詢第1個人的id屬性
// 找到第1個人
$person = $dom->getElementsByTagName ( 'person' )->item ( 0 );
// 查詢id屬性
echo $person->getAttribute('id');
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類的構造方法讀取