用PHP编写和读取XML的几种方式


Posted in PHP onJanuary 12, 2013

一.使用DOM生成和读取XML文件
实例一:

<?php 
//Creates XML string and XML document using the DOM 
$dom = new DomDocument('1.0'); 
//add root - <books> 
$books = $dom->appendChild($dom->createElement_x_x ('books')); 
//add <book> element to <books> 
$book = $books->appendChild($dom->createElement_x_x ('book')); 
//add <title> element to <book> 
$title = $book->appendChild($dom->createElement_x_x ('title')); 
//add <title> text node element to <title> 
$title->appendChild($dom->createTextNode('Great American Novel')); 
//generate xml 
$dom->formatOutput = true; // set the formatOutput attribute of domDocument to true 
//save XML as string or file 
$test1 = $dom->saveXML(); // put string in test1 
$dom -> save('test1.xml'); // save as file 
?>

实例二:
$aa = "111"; 
$xmlstr = <<<XML 
<?xml version='1.0'?> 
<document> 
<title>{$aa}</title> 
<from>Joe</from> 
<to>Jane</to> 
<body> 
I know that's the answer -- but what's the question? 
</body> 
</document> 
XML; 
$dom = new domDocument; 
$dom->loadXML($xmlstr); 
$test1 = $dom->saveXML(); 
$dom->save('test1.xml');

实例三:
test1.xml:

<?xml version="1.0"?> 
<books> 
<book> 
<author>Jack Herrington</author> 
<title>PHP Hacks</title> 
<publisher>O'Reilly</publisher> 
</book> 
<book> 
<author>Jack Herrington</author> 
<title>Podcasting Hacks</title> 
<publisher>O'Reilly</publisher> 
</book> 
</books>

example.php:

$doc = new DOMDocument(); 
$doc->load('test1.xml'); 
$books = $doc->getElementsByTagName("book"); 
foreach($books as $book){ 
$authors = $book->getElementsByTagName("author"); 
$author = $authors->item(0)->nodeValue; 
$publishers = $book->getElementsByTagName( "publisher" ); 
$publisher = $publishers->item(0)->nodeValue; 
$titles = $book->getElementsByTagName( "title" ); 
$title = $titles->item(0)->nodeValue; 
echo "$title - $author - $publisher\n"; 
}

二.使用simple生成和读取xml文件
实例一:

<? 
$xmlstr = <<<XML 
<?xml version='1.0' standalone='yes'?> 
<books> 
<book> 
<title>Great American Novel</title> 
<characters> 
<character> 
<name>Cliff</name> 
<desc>really great guy</desc> 
</character> 
<character> 
<name>Lovely Woman</name> 
<desc>matchless beauty</desc> 
</character> 
<character> 
<name>Loyal Dog</name> 
<desc>sleepy</desc> 
</character> 
</characters> 
<plot> 
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark 
at mailman. 
</plot> 
<success type='bestseller'>4</success> 
<success type='bookclubs'>9</success> 
</book> 
</books> 
XML; //提取节点内容 
$xml = new SimpleXMLElement($xmlstr); 
foreach ($xml->book[0]->success as $success) { 
switch((string) $success['type']) { // Get attributes as element indices 
case 'bestseller': 
echo $success. ' months on bestseller list<br>'; 
break; 
case 'bookclubs': 
echo $success. ' bookclub listings'; 
break; 
} 
} 
//修改文本节点内容 
$xml = new SimpleXMLElement($xmlstr); 
$xml->book[0]->characters->character[0]->name = 'Big Cliff'; 
echo $xml->asXML(); 
//添加子元素的文本节点 
$xml = new SimpleXMLElement($xmlstr); 
$character = $xml->book[0]->characters->addChild('character'); 
$character->addChild('name', 'Yellow Cat'); 
$character->addChild('desc', 'aloof'); 
$success = $xml->book[0]->addChild('success', '2'); 
$success->addAttribute('type', 'reprints'); 
echo $xml->asXML(); 
?>

实例二:

if (file_exists('test1.xml')) { //读取xml文件 
$xml = simplexml_load_file('test1.xml'); 
var_dump(xml); 
} else { 
exit('Failed to open test1.xml.'); 
}

三.DOM和simple互操作
DOM导入simpleXML:

<?php 
$sxe = simplexml_load_string('<books><book><title>Great American 
Novel</title></book></books>'); 
if ($sxe === false) { 
echo 'Error while parsing the document'; 
exit; 
} 
$dom_sxe = dom_import_simplexml($sxe); 
if (!$dom_sxe) { 
echo 'Error while converting XML'; 
exit; 
} 
$dom = new DOMDocument('1.0'); 
$dom_sxe = $dom->importNode($dom_sxe, true); 
$dom_sxe = $dom->appendChild($dom_sxe); 
$test2 = $dom->saveXML(); // put string in test2 
$dom -> save('test2.xml'); // save as file 
?>

simpleXML导入DOM:

<?php 
$dom = new domDocument; 
$dom->loadXML('<books><book><title>Great American 
Novel</title></book></books>'); 
if (!$dom) { 
echo 'Error while parsing the document'; 
exit; 
} 
$s = simplexml_import_dom($dom); 
echo $s->book[0]->title; // Great American Novel 
?>
PHP 相关文章推荐
批量修改RAR文件注释的php代码
Nov 20 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
php设计模式小结
Feb 15 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
PHP精确计算功能示例
Nov 29 PHP
php 函数使用可变数量的参数方法
May 02 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 #PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 #PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 #PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 #PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 #PHP
PHP编程函数安全篇
Jan 08 #PHP
php中定时计划任务的实现原理
Jan 08 #PHP
You might like
用php过滤危险html代码的函数
2008/07/22 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
简单了解Python3里的一些新特性
2019/07/13 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
竞聘上岗演讲稿
2014/05/16 职场文书
党员个人公开承诺书
2014/08/29 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android