XML详解二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文件
在浏览器输出如下图:

XML详解二XML的解析与创建的更多相关文章
- Struts2初学 Struts.xml详解二
A.使用继承实现设置全局视图 package节点中还可以设置全局的视图,如: <global-results> <result name="e ...
- XML详解一XML语法
XML指可扩展标记语言很类似 HTML,被设计用来传输和存储数据而非显示数据,XML标签没有被预定义需要自行定义标签,标签具有自我描述性,同时XML也是 W3C 的推荐标准. 先来写一个XML脚本de ...
- Maven配置文件setting.xml详解
注:本文来源于:大话JAVA的那些事 <Maven配置文件setting.xml详解> <?xml version="1.0" encoding="UT ...
- Tomcat配置(二):tomcat配置文件server.xml详解和部署简介
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Tomcat(二):tomcat配置文件server.xml详解和部署简介
Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...
- Web.xml详解(转)
这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一. Web.xml详解: (一) web.xml加载过程(步骤) 首 ...
- logback的使用和logback.xml详解,在Spring项目中使用log打印日志
logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分 ...
- 转载 logback的使用和logback.xml详解 http://www.cnblogs.com/warking/p/5710303.html
logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前 ...
- Maven全局配置文件settings.xml详解(转)
Maven全局配置文件settings.xml详解 目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...
随机推荐
- Python内置函数(46)——oct
英文文档: oct(x) Convert an integer number to an octal string. The result is a valid Python expression. ...
- IntelliJ IDEA 导入新项目
在现有的idea中close project 关闭当前项目, 然后import project
- cmake安装配置及入门指南
前言 今天,从github下载代码学习,让我用cmake编译,纳尼?make我知道,cmake是啥鬼?天啊,无知很可怕!赶紧mark一波,虽然很耽误学习进度,但感觉还是要get一波! 一.安装准备 感 ...
- Chapter 5 Blood Type——8
He chuckled. "What are your plans?" 他窃笑道.“那你的计划是什么?” I blushed. I had been vacillating dur ...
- 【Java基础】【22IO(其他流)&Properties】
22.01_IO流(序列流)(了解) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方 ...
- kernel pwn 入门环境搭建
刚开始上手kernel pwn,光环境就搭了好几天,应该是我太菜了.. 好下面进入正题,环境总共就由两部分构成,qemu和gdb.这两个最好都需要使用源码安装. 我使用的安装环境为 qemu:安装前要 ...
- Kubernetes审计日志方案
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...
- eclipse 创建maven 项目 动态web工程完整示例
需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...
- 实时显示数据 SignalR 及时消息提醒( 立即向其推送内容)
实时显示数据 SignalR 及时消息提醒( 立即向其推送内容) http://www.cnblogs.com/Leo_wl/p/5634910.html <!--Reference the ...
- sql字符串包含单引号
ad'min select * from user where name ='ad''min'