个人主页素材,window7旗舰版激活,大检察官法尔班克斯
xml用来传输和存储数据,如何解析获取到的xml文本呢?
一.解析xml
创建demo.xml文件:
<?xml version="1.0" encoding="utf-8"?> <bookstore> <book book_id="1"> <title>php</title> <author>php入门到放弃</author> </book> <book book_id="2"> <title>java</title> <author>java入门到放弃</author> </book> <book book_id="3"> <title>c</title> <author>c入门到放弃</author> </book> </bookstore>
使用php解析demo.xml中的内容,以获取到php这个文本节点为例:
<?php
/*思路:1.先载入xml文档 2.获取节点列表对象 3.获取子节点对象 4.获取子节点列表对象 5.获取文本对象 如果层级比较深就是循环2-4步,先拿列表对象,再拿子节点对象...*/
$dom = new domdocument('1.0','utf-8');
//print_r($dom); //domdocument object
$dom->load('demo.xml'); //载入要解析的xml文档
$titlelist = $dom->getelementsbytagname('title'); ////domnodelist object ( [length] => 3 ) 获取节点列表对象
$title = $titlelist->item(0); //domelement object 获取子节点对象
$title = $title->childnodes; //domnodelist object ( [length] => 1 )获取子节点列表对象
$title = $title->item(0); //domtext object 获取到文本对象
$text = $title->wholetext; //获取到文本内容
echo $text; //php
echo '<br>';
//也可以直接写成连贯操作:
$text = $dom->getelementsbytagname('title')->item(0)->childnodes->item(0)->wholetext;
echo $text; //php
echo '<br>';
//第二种方法:
$text = $dom->getelementsbytagname('title')->item(0)->nodevalue; //获取到文本内容
echo $text; //php
除了解析之外,还可以对xml节点进行删除和替换操作:
$dom = new domdocument('1.0','utf-8');
$dom->load('demo.xml'); //载入要解析的xml文档
/**
*xml删除节点
* */
$php = $dom->getelementsbytagname('book')->item(0); //获取文本节点
$php->parentnode->removechild($php); //获取文本节点的父节点,然后站在父节点的立场删除子文本节点
/**
* xml替换节点
* */
$java = $dom->getelementsbytagname('title')->item(0); //获取要替换的文本节点
$newnode = $dom->createtextnode('python'); //创建新的文本节点
$java->replacechild($newnode,$java->firstchild); //用新节点替换旧文本节点内容
header("content-type:text/xml");
echo $dom->savexml(); //直接输出xml文本
二.创建xml
使用php创建一个如下的xml文件:
<?xml version="1.0" encoding="utf-8"?> <bookstore> <book book_id="1"> <title>php</title> <author><![cdata[php是世界上最好的编程语言.emmm...]]></author> </book> </bookstore>
php代码:
<?php
$dom = new domdocument('1.0','utf-8');
$text = $dom->createtextnode('php'); //创建文本节点
$title = $dom->createelement('title'); //创建普通节点
$title->appendchild($text); //将文本节点作为子节点添加到普通节点内
$cdata = $dom->createcdatasection('php是世界上最好的编程语言.emmm...'); //创建cdata节点
$author = $dom->createelement('author'); //创建普通节点
$author->appendchild($cdata); //将cdata节点作为子节点添加到普通节点内
$book = $dom->createelement('book'); //创建普通节点
//将上面创建的两个普通节点作为子节点添加到普通节点内
$book->appendchild($title);
$book->appendchild($author);
$book_id = $dom->createattribute('book_id'); //创建属性名
$book_id->value = '1'; //创建属性值
$book->appendchild($book_id); //将属性加到普通节点内
$bookstore = $dom->createelement('bookstore'); //创建普通节点
$bookstore->appendchild($book); //将普通节点作为子节点添加到普通节点内
$dom->appendchild($bookstore); //将普通节点添加到文档内
// header("content-type:text/xml");
// echo $dom->savexml(); //直接输出xml文本
echo $dom->save('demo.xml'); //生成xml文件
在浏览器输出如下图:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
网友评论