【万能的数据传输格式XML入门教程】六、PHP DOM模型增删改

1. PHP DOM模型增加操作五步走

第一步:开辟内存空间,形成“面”
第二步:载入XML数据到内存,形成DOM树结构
第三步:创建新节点
第四步:追加新节点到父节点
第五步:保存内存中的数据到XML文档中

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

主要功能:创建新节点

参数 说明
$name 新节点名称
$value 新节点的值
public DOMNode DOMNode::appendChild ( DOMNode $newnode )

主要功能:追加子节点

参数 说明
$newnode 要追加的新节点
public int DOMDocument::save ( string $filename [, int $options ] )

主要功能:保存内存中的数据到XML文档中

参数 说明
$filename 要保存xml的名称
// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间,形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入xml文档到内存,形成DOM树
$dom->load('data.xml');
// 3、创建新节点
$book = $dom->createElement('book');
$title = $dom->createElement('title','水浒传');
$price = $dom->createElement('price','99.80');
$author = $dom->createElement('author','施耐庵');
$publish = $dom->createElement('publish','清华出版社');
// 4、追加新节点到父节点
$book->appendChild($title);
$book->appendChild($price);
$book->appendChild($author);
$book->appendChild($publish);
// 获取根节点
// $root = $dom->getElementsByTagName('library')->item(0);
$root = $dom->documentElement;
$root->appendChild($book);
// 5、保存内存中的数据到XML文档中
$dom->save('data.xml');
echo '增加成功';

运行结果:

2. PHP DOM模型删除操作六步走

第一步:开辟内存空间,形成“面”
第二步:载入xml文档到内存,形成DOM树结构
第三步:找到要删除的节点
第四步:找到其父节点
第五步:删除操作
第六步:保存内存中的数据到XML文档中

public DOMNode DOMNode::removeChild ( DOMNode $oldnode )

主要功能:删除其子节点

参数 说明
$oldnode 要删除的老节点
// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间,形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入XML文档到内存,形成DOM树
$dom->load('data.xml');
// 3、找到要删除的节点
$oldnode = $dom->getElementsByTagName('book')->item(1);
// 4、找到其父节点
$root = $dom->documentElement;
// 5、删除节点
$root->removeChild($oldnode);
// 6、保存内存中的数据到XML文档中
$dom->save('data.xml');
echo '删除成功';

运行效果:

3. PHP DOM模型修改操作几步走

(1)值修改五步走:

第一步:开辟内存空间,形成“面”
第二步:载入XML文档到内存,形成DOM树
第三步:找到要修改的节点
第四步:通过nodeValue属性修改其值
第五步:保存内存中的数据到XML文档中

// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入XML文档到内存
$dom->load('data.xml');
// 3、获取要修改的节点
$title = $dom->getElementsByTagName('title')->item(1);
// 4、通过nodeValue修改其值
$title->nodeValue = '三国志';
// 5、保存内存中的数据到XML文档中
$dom->save('data.xml');
echo '值修改成功';

运行结果:

(2)节点修改七步走:

第一步:开辟内存空间,形成“面”
第二步:载入XML文档到内存,形成DOM树
第三步:找到要修改的老节点
第四步:创建新节点
第五步:找到老节点的父节点
第六步:用新节点替换老节点
第七步:保存内存中的数据到XML文档中

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

主要功能:用新节点替换老节点

参数 说明
$newnode 新节点
$oldnode 老节点
// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间,形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入xml文档到内存,形成DOM树
$dom->load('data.xml');
// 3、找到要修改的老节点
$oldnode = $dom->getElementsByTagName('title')->item(1);
// 4、创建新节点
$newnode = $dom->createElement('title','三国演义');
// 5、找到老节点的父节点
$parentNode = $dom->getElementsByTagName('book')->item(1);
// 6、用新节点替换老节点
$parentNode->replaceChild($newnode, $oldnode);
// 7、保存内存中的数据到XML文档中
$dom->save('data.xml');
echo '替换成功';

运行结果:

4、PHP DOM模型属性操作(增删改查)

(1)属性的读取四步走

第一步:开辟内存空间,形成“面”
第二步:加载XML文档,形成DOM树
第三步:获取指定的元素
第四步:通过相关方法获取元素的属性

bool DOMElement::hasAttribute ( string $name )

主要功能:判断某个元素是否具有$name属性

参数说明:

参数 说明
$name 属性名称
bool DOMNode:: hasAttributes ( void )

主要功能:判断某个元素是否具有属性

string DOMElement::getAttribute ( string $name )

主要功能:获取元素属性的值

参数 说明
$name 要获取的属性名称
// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间,形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入xml到内存,形成DOM树结构
$dom->load('data.xml');
// 3、获取指定的元素
$book = $dom->getElementsByTagName('book')->item(1);
// 4、根据相关方法获取元素属性的值
if($book->hasAttributes()) {
    echo '具有属性';
} else {
    echo '不具有属性';
}
echo '<hr />';
if($book->hasAttribute('id')) {
    echo $book->getAttribute('id');
} else {
    echo '不具有id属性';
}

运行结果:

(2)增加与修改操作

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

主要功能:如果一个元素没有某个属性,那么可以通过setAttribute进行添加

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

主要功能:如果一个元素具有某个属性,那么可以通过setAttribute进行修改

// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间,形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入xml文档到内存中,形成DOM树
$dom->load('data.xml');
// 3、获取指定的元素
$book = $dom->getElementsByTagName('book')->item(1);
// 4、修改元素的id属性
$book->setAttribute('id','b002');
// 5、保存内存中的数据到XML文档中
$dom->save('data.xml');
echo '更新成功';

运行结果:

(3)删除操作

bool DOMElement::removeAttribute ( string $name )

主要功能:删除元素的$name属性

参数 说明
$name 要删除元素属性的名称
// 设置响应头信息
header('Content-type:text/html; charset=utf-8');
// 1、开辟内存空间,形成“面”
$dom = new DOMDocument('1.0', 'utf-8');
// 2、载入xml文档到内存中,形成DOM树
$dom->load('data.xml');
// 3、获取指定元素
$book = $dom->getElementsByTagName('book')->item(1);
// 4、移除指定的元素的属性
$book->removeAttribute('id');
// 5、保存数据到XML文档中
$dom->save('data.xml');
echo '移除成功';

运行结果:

原文地址:https://www.cnblogs.com/chenjiacheng/p/6522566.html