找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 469|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 08:26:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            一.使用DOM生成和读取XML文件
实例一:
[U]复制代码[/U] 代码如下:
appendChild($dom->createElement_x_x ('books'));
//add element to
$book = $books->appendChild($dom->createElement_x_x ('book'));
//add  element to
$title = $book->appendChild($dom->createElement_x_x ('title'));
//add  text node element to  
$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
?>

实例二:
[U]复制代码[/U] 代码如下:
$aa = "111";
$xmlstr =  

{$aa}
Joe
Jane

I know that's the answer -- but what's the question?


XML;
$dom = new domDocument;
$dom->loadXML($xmlstr);
$test1 = $dom->saveXML();
$dom->save('test1.xml');

实例三:
test1.xml:
[U]复制代码[/U] 代码如下:



Jack Herrington
PHP Hacks
O'Reilly


Jack Herrington
Podcasting Hacks
O'Reilly



example.php:
[U]复制代码[/U] 代码如下:
$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文件
实例一:
[U]复制代码[/U] 代码如下:



Great American Novel


Cliff
really great guy


Lovely Woman
matchless beauty


Loyal Dog
sleepy



Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.

4
9


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
';
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();
?>

实例二:
[U]复制代码[/U] 代码如下:
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:
[U]复制代码[/U] 代码如下:
Great American
Novel
');
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:
[U]复制代码[/U] 代码如下:
loadXML('Great American
Novel
');
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title; // Great American Novel
?>
            
            
您可能感兴趣的文章:
  • php生成xml简单实例代码
  • PHP XML操作类DOMDocument
  • PHP XML操作的各种方法解析(比较详细)
  • php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
  • 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
  • php输出xml格式字符串(用的这个)
  • PHP输出XML到页面的3种方法详解
  • php的SimpleXML方法读写XML接口文件实例解析
  • php实现将数组转换为XML的方法
  • PHP处理数组和XML之间的互相转换
  • PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
  • PHP基于DOMDocument解析和生成xml的方法分析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端