XML的解析与创建
前言
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文件
在浏览器输出如下图:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfbhkj
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01