用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 相关文章推荐
用PHP的ob_start() 控制您的浏览器cache
Aug 03 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
PHP Session机制简介及用法
Aug 19 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
php制作简单模版引擎
Apr 07 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
如何离线执行php任务
Feb 21 PHP
PHP生成推广海报的方法分享
Apr 22 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
2019/04/08 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
百度留言本js 大家可以参考下
2009/10/13 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
零基础学Python(一)Python环境安装
2014/08/20 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
使用Python函数进行模块化的实现
2019/11/15 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
大学生应聘推荐信范文
2013/11/19 职场文书
路政管理专业个人自荐信范文
2013/11/30 职场文书
历史教育专业个人求职信
2013/12/13 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
会计学生自我鉴定
2014/02/06 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
党员自我对照检查材料
2014/08/19 职场文书
安全生产标语口号
2015/12/26 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS