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', '' );
// 将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></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 ( );
// 将节点删除
$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 ( );
// 创建出新的节点
$person = $dom->createElement ( 'person' );
$name = $dom->createElement ( 'name', 'songjiang' );
$age = $dom->createElement ( 'age', );
$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 ( );
// 添加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 ( );
// 删除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 ( );
// 查询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类的构造方法读取

php中的XML DOM(11)的更多相关文章

  1. JavaScript 【 IE中的XML DOM 】

    IE中的 XML DOM 在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同.DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM.所以,在不同的浏览器实现XML的 ...

  2. php中的XML DOM(10)

    1.PHP DOM (1) Php中的DOM跟javascript不一样,属性不用另外增加一个节点 2.主要类 DOMDocument :文档类 DOMNodeList :节点列表类 DOMNode ...

  3. javascript快速入门25--浏览器中的XML

    打开XML 首先,直接从浏览器中打开XML文件,浏览器会对其进行格式良好性检查,如果不符合XML语法规范则显示出错,如果格式良好,再检查是否包含样式表(CSS或XSL),如果包含样式表,则用样式表格式 ...

  4. DOM和SAX是应用中操纵XML文档的差别

    查看原文:http://www.ibloger.net/article/205.html DOM和SAX是应用中操纵XML文档的两种主要API.它们分别解释例如以下:          DOM.即Do ...

  5. Android中的XML解析

    在安卓中主要有三种XML文档解析方式:DOM(Document Object Model), SAX(Simple API for XML), PULL 他们的主要特点如下表:   特点 主要类 DO ...

  6. 第12章 在.NET中操作XML

    12.1 XML概述 12.1.1 为什么要有XML 12.1.2 XML文档结构 (1)文档声明 <?xml version="1.0"encoding="UTF ...

  7. XML DOM(Document Object Model)

    1.XML DOM 是用于获取.更改.添加或删除 XML 元素的标准.2.节点(XML 文档中的每个成分都是一个节点):        整个文档是一个文档节点:        每个XML元素是一个元素 ...

  8. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  9. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

随机推荐

  1. Windows和Linux双系统下完美卸载linux

    装了Windows和linux双系统的朋友,在后期要删除linux是个比较头痛的问题,因为MBR已经被linux接管,本文的目的是如何在windows 和linux双系统下,简单,完美地卸载linux ...

  2. gRPC初探——概念介绍以及如何构建一个简单的gRPC服务

    目录 引言 1. gRPC简介 2. 使用Protocol Buffers进行服务定义 2.1 定义消息 2.2 定义服务接口 3.构建简单的gRPC服务 3.1 编写proto文件,定义消息和接口 ...

  3. SSD

    https://blog.csdn.net/WZZ18191171661/article/details/79444217 论文题目:SSD: Single Shot MultiBox Detecto ...

  4. learning.py报错

    在廖雪峰大神的网站下学习了Python,其中有一个提供互动环境的Python脚本--learning.py,报了个错,看了下源文件的代码,安排了一下. 报错信息: This learning.py i ...

  5. xen虚拟机管理命令

    #xen虚拟机管理命令 xm list:所有已知的虚拟机列表 xm create:启动一个非托管的虚拟机 xm top:提供所有虚拟机的状态概貌 xm console:打开控制台管理虚拟机 xm ne ...

  6. QEMU 代码分析:BIOS 的加载过程

    http://www.ibm.com/developerworks/cn/linux/1410_qiaoly_qemubios/ QEMU 中使用 BIOS 简介 BIOS 提供主板或者显卡的固件信息 ...

  7. 转载:字符串hash总结(hash是一门优雅的暴力!)

    转载自:远航休息栈 字符串Hash总结 Hash是什么意思呢?某度翻译告诉我们: hash 英[hæʃ] 美[hæʃ]n. 剁碎的食物; #号; 蔬菜肉丁;vt. 把…弄乱; 切碎; 反复推敲; 搞糟 ...

  8. TF Boys (TensorFlow Boys ) 养成记(六): CIFAR10 Train 和 TensorBoard 简介

    圣诞节玩的有点嗨,差点忘记更新.祝大家昨天圣诞节快乐,再过几天元旦节快乐. 来继续学习,在/home/your_name/TensorFlow/cifar10/ 下新建文件夹cifar10_train ...

  9. PHP 微信公众号开发 - 消息推送

    项目微信公众号开发,需要做用户消息推送,记录下来以便日后使用 1,接上一篇文章,可以查看如何获取用户openid PHP 微信公众号开发 - 获取用户信息 2,添加模板消息 3,查看模板详情 根据模板 ...

  10. Ubuntu的TOOL工具收集

    Ubuntu工具 1. Ubuntu下嵌入式开发环境的搭建 http://www.linuxidc.com/Linux/2011-03/33824.htm