上一节,讲了Xml文件基本语法及元素,实体及Dtd约束技术,下面就正式进入PHP的Xml编程

使用PHP技术对Xml文件进行操作
常用的有以下三种技术:
1、PHP dom
2、PHP结合XPath操作Xml
3、Simplexml技术
首先来说明Dom
Dom(Document object model)文档-对象-模型,核心思想是把一个Xml文件,看成一个对象模型,然后通过对象的方式来操作Xml文件。

1、创建一个Xml文件

在学习过程中发现,自己直接编写的Xml文件,在调用Xml函数的时候总是不能被正确的识别,所以先用PHP来创建一个Xml文件,再进行操作,直接看代码

<?php
//实例化一个DomDocument对象
$dom = new DomDocument('1.0', 'UTF-8');
//如果文件不存在就创建一个
if (!file_exists("xml_test.xml")){
header("Content-Type: text/plain");
$root = $dom->createElement("class");
$dom->appendChild($root);
$dom->save("xml_test.xml");
} else{
$dom->load("xml_test.xml");
}
print $dom->saveXML();
?>

在网页上打开,执行会创建个xml_test.xml文件(这里有个问题是,根目录的名字不能使用汉字,具体没有明白如何去设置?知道的朋友给指点下,非常感谢!)

<?xml version="1.0" encoding="UTF-8"?>
<class/>

2、增加元素

<?php
//addElementsxml.php
$dom = new DOMDocument("1.0", "UTF-8"); $dom->load("xml_test.xml"); $root_class = $dom->getElementsByTagName("class");
$i = 0;
// for($i = 0;$i < 4; $i++){
$root_class_node = $root_class->item($i);
$stu_node=$dom->createElement("student");
$stu_node->setAttribute("xingbie", "man");
$stu_node_name=$dom->createElement("name","name".$i);
//设置属性
$stu_node_name->setAttribute("hel", "23");
$stu_node_age=$dom->createElement("age","21");
$stu_node_introduce=$dom->createElement("introduce","1111");
$stu_node->appendChild($stu_node_name);
$stu_node->appendChild($stu_node_age);
$stu_node->appendChild($stu_node_introduce);
$root_class_node->appendChild($stu_node);
// }
$dom->save("xml_test.xml");
print $dom->saveXML(); ?>

3、遍历元素

<?php
//getNode.php
//解析一个文件的步骤
//1创建一个对象,表示文档
$dom = new DOMDocument("1.0", "UTF-8");
//2制定加载那个Xml,解析那个文件
$dom->load("xml_test.xml");
//3 获取你关新节点
$stu_nodes = $dom->getElementsByTagName("student"); for ($i=0;$i<$stu_nodes->length;$i++){
//取出每个学生
$stu_node = $stu_nodes->item($i);
for($i=0;$i<$stu_node->childNodes->length;$i++){
echo $stu_node->childNodes->item($i)->nodeValue;
echo "<br/>";
}
}
?>

4、删除元素

<?php
//解析一个文件的步骤
//1创建一个对象,表示文档
$dom = new DOMDocument("1.0", "UTF-8");
//2制定加载那个Xml,解析那个文件
$dom->load("xml_test.xml");
//3 获取你关新节点
$stu_nodes = $dom->getElementsByTagName("student");
$stu_node=$stu_nodes->item($stu_nodes->length -1);
$stu_node->parentNode->removeChild($stu_node); $dom->save("xml_test.xml");
?>

5、修改元素属性

<?php
//1创建一个对象,表示文档
$dom = new DOMDocument("1.0", "UTF-8");
//2制定加载那个Xml,解析那个文件
$dom->load("xml_test.xml"); //找到这个学生
$stus=$dom->getElementsByTagName("age")->item(0);
$stus->nodeValue=100; $dom->save("xml_test.xml");
?>

上面介绍了基本DOM操作,增删改查,下一节将有具体的实例来操作


参考资料:

PHP 自学之路-----XML编程(Dom技术)的更多相关文章

  1. PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门

    XPAth技术 XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点.主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]. Xapth主要用来 ...

  2. 【二十八】xml编程(dom\xpath\simplexml)

    1.xml基础概念 作用范围: 作为程序通讯的标准. 作为配置文件. 作为小型数据库. xml语法: <根标签> <标签 元素="元素值" ...>< ...

  3. PHP自学之路---报表及绘图技术

    Ø  报表 a)        什么是报表 报表就是用表格.图表等格式来动态显示数据. b)        PHP绘图坐标系 1.  坐标系介绍 下图说明了PHP坐标系.坐标原点位于左上角,以像素为单 ...

  4. dom技术解析xml下jaxp解析器详细代码

    1.使用jaxp实现查询操作 person.xml <?xml version="1.0" encoding="UTF-8" standalone=&qu ...

  5. 自动化测试学习之路--json、dom编程

    1.json: json是JavaScript Object Notation,是一种数据传输格式. 以下程序都是在浏览器的Console下执行的. 创建一个javaScript的对象: var st ...

  6. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  7. 【转】Java自学之路——by马士兵

    作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...

  8. Java自学之路(新手一定要看)

    Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...

  9. [感悟]马士兵Java自学之路——(精华版)

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

随机推荐

  1. Codeforces Round #360 (Div. 2) A. Opponents 水题

    A. Opponents 题目连接: http://www.codeforces.com/contest/688/problem/A Description Arya has n opponents ...

  2. CDOJ 1401 谭爷的黑暗沙拉 数学

    谭爷的黑暗沙拉 题目连接: http://mozhu.today/#/problem/show/1401 Description 谭爷有\(n\)种不同种类的食材(水果&蔬菜),他想做出一份总 ...

  3. URAL 1876 Centipede's Morning

    1876. Centipede's Morning Time limit: 0.5 secondMemory limit: 64 MB A centipede has 40 left feet and ...

  4. 简单的文件上传html+ashx

    前台页面:<form action="upload.ashx" method="post" enctype="multipart/form-da ...

  5. [置顶] Spring的自动装配

    采用构造函数注入,以及setter方法注入都需要写大量的XML配置文件,这时可以采用另一种方式,就是自动装,由Spring来给我们自动装配我们的Bean. Spring提供了四种自动装配类型 1:By ...

  6. 斑马Zebra驱动下载

    Zebra GT800 点击进入下载页-> 自动安装包[WINXP/WIN7/WIN8]点击进入下载页-> 添加打印机向导[WINXP/WIN7/WIN8]   热门下载 · Zebra ...

  7. [Javascript]XMLHttpRequest对象实现下载进度条

    摘要 可以通过设置一个XMLHttpRequest对象的responseType属性来改变一个从服务器上返回的响应的数据类型.可用的属性值为空字符串 (默认), "arraybuffer&q ...

  8. MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8

    来看看如何解决乱码问题: 在mysql中默认字符集是latin1, 想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置: [client] default-character-set ...

  9. 5. python 文本解析

    5. python 文本解析 这一章节我们简单的聊聊文本解析的两种方法: 1.分片,通过分片,记录偏移处,然后提取想要的字符串 例子: >>> line='aaa bbb ccc'  ...

  10. Oracle存储过程update受外键约束的主键值时完整性冲突解决方式

    1.问题背景 尽管在数据库操作中我们并不提倡改动主键,可是确实在实际生活中有这种业务需求: 表A有主键KA,表B中声明了一个references A(KA)的外键约束.我们须要改动A中某条目KA的值而 ...