用PHP编写和读取XML的几种方式
2015-01-24信息快讯网
今天我看了IBM的一些官方文档和一些XML的相关资料,特把一些关键点以及PHP编写和读取XML的一些实例整理出来,方便以后使用
一.使用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 ?>
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
PHP 伪静态技术原理以及突破原理实现介绍
php的$_FILES的临时储存文件与回收机制实测过程
php图像处理函数大全(推荐收藏)
PHP 获取远程文件大小的3种解决方法
探讨:array2xml和xml2array以及xml与array的互相转化
php 备份数据库代码(生成word,excel,json,xml,sql)
深入理解:XML与对象的序列化与反序列化
探讨:使用XMLSerialize 序列化与反序列化
探讨如何使用SimpleXML函数来加载和解析XML文档
基于PHP对XML的操作详解
PHP读取xml方法介绍
php图片的裁剪与缩放生成符合需求的缩略图
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
php判断上传的Excel文件中是否有图片及PHPExcel库认识
PHP中header和session_start前不能有输出原因分析
PHP跨时区(UTC时间)应用解决方案
php获取通过http协议post提交过来xml数据及解析xml
PHP中3种生成XML文件方法的速度效率比较
PHP中的生成XML文件的4种方法分享
xml在joomla表单中的应用详解分享
php输出xml格式字符串(用的这个)
php中使用DOM类读取XML文件的实现代码
PHP用SAX解析XML的实现代码与问题分析