PHP XML操作类DOMDocument


Posted in PHP onDecember 16, 2009

DOMDocument相关的内容.

属性:

Attributes 存储节点的属性列表(只读)
childNodes 存储节点的子节点列表(只读)
dataType 返回此节点的数据类型
Definition 以DTD或XML模式给出的节点的定义(只读)
Doctype 指定文档类型节点(只读)
documentElement 返回文档的根元素(可读写)
firstChild 返回当前节点的第一个子节点(只读)
Implementation 返回XMLDOMImplementation对象
lastChild 返回当前节点最后一个子节点(只读)
nextSibling 返回当前节点的下一个兄弟节点(只读)
nodeName 返回节点的名字(只读)
nodeType 返回节点的类型(只读)
nodeTypedValue 存储节点值(可读写)
nodeValue 返回节点的文本(可读写)
ownerDocument 返回包含此节点的根文档(只读)
parentNode 返回父节点(只读)
Parsed 返回此节点及其子节点是否已经被解析(只读)
Prefix 返回名称空间前缀(只读)
preserveWhiteSpace 指定是否保留空白(可读写)
previousSibling 返回此节点的前一个兄弟节点(只读)
Text 返回此节点及其后代的文本内容(可读写)
url 返回最近载入的XML文档的URL(只读)
Xml 返回节点及其后代的XML表示(只读)

方法:

appendChild 为当前节点添加一个新的子节点,放在最后的子节点后
cloneNode 返回当前节点的拷贝
createAttribute 创建新的属性
createCDATASection 创建包括给定数据的CDATA段
createComment 创建一个注释节点
createDocumentFragment 创建DocumentFragment对象
createElement 创建一个元素节点
createEntityReference 创建EntityReference对象
createNode 创建给定类型,名字和命名空间的节点
createPorcessingInstruction 创建操作指令节点
createTextNode 创建包括给定数据的文本节点
getElementsByTagName 返回指定名字的元素集合
hasChildNodes 返回当前节点是否有子节点
insertBefore 在指定节点前插入子节点
Load 导入指定位置的XML文档
loadXML 导入指定字符串的XML文档
removeChild 从子结点列表中删除指定的子节点
replaceChild 从子节点列表中替换指定的子节点
Save 把XML文件存到指定节点
selectNodes 对节点进行指定的匹配,并返回匹配节点列表
selectSingleNode 对节点进行指定的匹配,并返回第一个匹配节点
transformNode 使用指定的样式表对节点及其后代进行转换
transformNodeToObject 使用指定的样式表将节点及其后代转换

实例获取标签属性.值:

Me.xml

<?xml version="1.0" encoding="utf-8"?> 
<phplamp> 
<post> 
<title id="1">PHP XML处理介绍一</title> 
<details>详细内容一</details> 
</post> 
<post> 
<title id="2">PHP XML处理介绍二</title> 
<details>详细内容二</details> 
</post> 
<post> 
<title id="3">PHP XML处理介绍三</title> 
<details>详细内容三</details> 
</post> 
</phplamp>

// 首先要建一个DOMDocument对象 
$xml = new DOMDocument(); // 加载Xml文件 
$xml->load("me.xml"); 
// 获取所有的post标签 
$postDom = $xml->getElementsByTagName("post"); 
// 循环遍历post标签 
foreach($postDom as $post){ 
// 获取Title标签Node 
$title = $post->getElementsByTagName("title"); 
/** 
* 要获取Title标签的Id属性要分两部走 
* 1. 获取title中所有属性的列表也就是$title->item(0)->attributes 
* 2. 获取title中id的属性,因为其在第一位所以用item(0) 
* 
* 小提示: 
* 若取属性的值可以用item(*)->nodeValue 
* 若取属性的标签可以用item(*)->nodeName 
* 若取属性的类型可以用item(*)->nodeType 
*/ 
echo "Id: " . $title->item(0)->attributes->item(0)->nodeValue . "<br />"; 
echo "Title: " . $title->item(0)->nodeValue . "<br />"; 
echo "Details: " . $post->getElementsByTagName("details")->item(0)->nodeValue . "<br /><br />"; 
}

下面是js读取xml文件的代码 ajax+xml留言

var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 
xmldoc.async = false; 
var 旧发言 = ""; 
function getxml(){ 
try{ 
xmldoc.load("word.xml"); 
if(xmldoc.documentElement != null){ 
var 新发言 = xmldoc.xml; 
if(新发言 != 旧发言){ 
旧发言 = 新发言; 
var allwords = xmldoc.selectNodes("list/message"); 
新发言 = ""; 
for(var i = 0;i < allwords.length;i++){ 
var 数组 = allwords[i].text.split("@"); 
var 作者 = 数组[0]; 
if(作者 == 用户名.value){ 
作者 = "<font color='Turquoise'>"+作者+"</font>"; 
} 
else{ 
作者 = "<font color='Silver'>"+作者+"</font>"; 
} 
var 发言= "<font color='Gold'>"+数组[1]+"</font>"; 
新发言 += "<div>"+作者+" "+发言+"</div>" 
+"<div style='text-align:right;font-size:9px;'>" 
+allwords[i].getAttribute("author").substring(0,allwords[i].getAttribute("author").lastIndexOf(".")+1) 
+"* " 
+allwords[i].getAttribute("time") 
+"</div>"; 
} 
words.innerHTML = 新发言; 
words.scrollTop = words.scrollHeight; 
} 
} 
} 
catch(e){ 
} 
} 
var 读取中 = false; 
function getdata(){ 
if(!读取中){ 
读取中 = true; 
getxml(); 
读取中 = false; 
} 
setTimeout("getdata()",3000); 
} 
getdata(); 
submit.onclick = function(){ 
submit.disabled = true; 
if(word.value != ""){ 
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
xmlHttp.open("GET","save.php?name=" +encodeURIComponent(用户名.value)+ "&word="+encodeURIComponent(word.value), true); 
xmlHttp.setRequestHeader("Content-Type","text/html; charset=utf-8"); 
xmlHttp.send(null); 
word.value = ""; 
if(!读取中){ 
读取中 = true; 
getxml(); 
读取中 = false; 
} 
} 
setTimeout("submit.disabled = false;",3000); 
word.focus(); 
}
PHP 相关文章推荐
PHP 存储文本换行实现方法
Jan 05 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
详解Window7 下开发php扩展
Dec 31 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
详解PHP中的8个魔术常量
Jul 06 PHP
PHP7 弃用功能
Mar 09 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 #PHP
php生成xml简单实例代码
Dec 16 #PHP
PHP 基本语法格式
Dec 15 #PHP
php遍历目录viewDir函数
Dec 15 #PHP
php csv操作类代码
Dec 14 #PHP
PHP开发过程中常用函数收藏
Dec 14 #PHP
将文件夹压缩成zip文件的php代码
Dec 14 #PHP
You might like
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
vue使用自定义icon图标的方法
2018/05/14 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
利用Python如何批量更新服务器文件
2018/07/29 Python
基于Python函数和变量名解析
2019/07/19 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
中科创达面试题
2016/12/28 面试题
网吧消防安全制度
2014/01/28 职场文书
网络教育自我鉴定
2014/02/04 职场文书
亲子读书活动方案
2014/02/22 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
火锅店的活动方案
2014/08/15 职场文书
体育个人工作总结
2015/02/09 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
裁员通知
2015/04/25 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
java代码实现空间切割
2022/01/18 Java/Android
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang