php中DOMElement操作xml文档实例演示


Posted in PHP onMarch 26, 2013
<?php 
//Store your html into $html variable. 
$html="<html> 
<head> 
<title>Rakesh Verma</title> 
</head> 
<body> 
<a href='http://example.com'>Example</a> 
<a href='http://google.com'>Google</a> 
<a href='http://www.yahoo.com'>Yahoo</a> 
</body> 
</html>"; 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 
//Evaluate Anchor tag in HTML 
$xpath = new DOMXPath($dom); 
$hrefs = $xpath->evaluate("/html/body//a"); 
for ($i = 0; $i < $hrefs->length; $i++) { 
$href = $hrefs->item($i); 
$url = $href->getAttribute('href'); 
//remove and set target attribute 
$href->removeAttribute('target'); 
$href->setAttribute("target", "_blank"); 
$newURL=$url.".au"; 
//remove and set href attribute 
$href->removeAttribute('href'); 
$href->setAttribute("href", $newURL); 
} 
// save html 
$html=$dom->saveHTML(); 
echo $html; 
?>

例2
/*<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<!-- css的样式定义,不加点。如:name{color:red;} --> 
<?xml-stylesheet type="text/css" href="css.css"?> 
<!-- 引入dtd文档定义文件 (根元素:班级)<!DOCTYPE 班级 SYSTEM "class.dtd" /> --> 
<!-- <!DOCTYPE 班级[ 
<!ELEMENT 班级 (学生+)> 
<!ELEMENT 学生 (名字,年龄,介绍)> 
<!ELEMENT 名字 (#PCDATA)> 
<!ELEMENT 年龄 (#PCDATA)> 
<!ELEMENT 介绍 (#PCDATA)> 
] /> --> 
<班级> 
<学生 number="101"> 
<名字>孙悟空</名字> 
<名字>孙行者</名字> 
<年龄>123</年龄> 
<介绍><![CDATA[&*$%特殊字串^&#$&]]></介绍> 
</学生> 
<学生 number="10"2"> 
<名字>白骨精</名字> 
<年龄>140</年龄> 
<介绍>介绍内容</介绍> 
</学生> 
</班级> 
*/ 
$xmldoc = new DOMDocument('1.0', 'UTF-8'); 
$xmldoc->load('datas.xml'); 
$itemsNodeList = $xmldoc->getElementsbyTagName('学生'); 
$itemElement = $itemsNodeList->item(0);//得到第一个完整的学生信息节点 
$itemChildsNodeList = $itemElement->getElementsbyTagName('名字');//得到子节点“名字”,也许有多个名字 
$itemChildNode = $itemChildsNodeList->item(0);//得到第一个名字节点 
echo $itemChildNode->nodeValue;//输出节点值 
//封装成函数 
$nodeArr = array('名字', '年龄', '介绍'); 
function getNodeVal($xmldoc, $itemsName, $nodeArr){ 
$items = $xmldoc->getElementsByTagName($itemsName); 
for($i=0; $i < $items->length; $i++){ 
$item = $items->item($i); 
foreach($nodeArr as $node){ 
$data[$i][] = $item->getElementsByTagName($node)->item(0)->nodeValue; 
} 
} 
return $data; 
} 
$data = getNodeVal($xmldoc, '学生', $nodeArr); 
print_r($data);
PHP 相关文章推荐
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
php 定界符格式引起的错误
May 24 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
php更新修改excel中的内容实例代码
Feb 26 PHP
PHP中预定义的6种接口介绍
May 12 PHP
php使用curl打开https网站的方法
Jun 17 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 #PHP
PHP中图片等比缩放的实例
Mar 24 #PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 #PHP
php实现单链表的实例代码
Mar 22 #PHP
php 判断数组是几维数组
Mar 20 #PHP
php页面消耗内存过大的处理办法
Mar 18 #PHP
ajax取消挂起请求的处理方法
Mar 18 #PHP
You might like
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
详解Python进程间通信之命名管道
2017/08/28 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Python autoescape标签用法解析
2020/01/17 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
《鸟的天堂》教学反思
2014/02/27 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
golang正则之命名分组方式
2021/04/25 Golang
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
ubuntu下常用apt命令介绍
2022/06/05 Servers