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的解析与创建的更多相关文章

  1. Struts2初学 Struts.xml详解二

    A.使用继承实现设置全局视图    package节点中还可以设置全局的视图,如:     <global-results>         <result name="e ...

  2. XML详解一XML语法

    XML指可扩展标记语言很类似 HTML,被设计用来传输和存储数据而非显示数据,XML标签没有被预定义需要自行定义标签,标签具有自我描述性,同时XML也是 W3C 的推荐标准. 先来写一个XML脚本de ...

  3. Maven配置文件setting.xml详解

    注:本文来源于:大话JAVA的那些事 <Maven配置文件setting.xml详解> <?xml version="1.0" encoding="UT ...

  4. Tomcat配置(二):tomcat配置文件server.xml详解和部署简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...

  6. Web.xml详解(转)

    这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一.            Web.xml详解: (一)  web.xml加载过程(步骤) 首 ...

  7. logback的使用和logback.xml详解,在Spring项目中使用log打印日志

    logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分 ...

  8. 转载 logback的使用和logback.xml详解 http://www.cnblogs.com/warking/p/5710303.html

    logback的使用和logback.xml详解  一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前 ...

  9. Maven全局配置文件settings.xml详解(转)

    Maven全局配置文件settings.xml详解   目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...

随机推荐

  1. Docker系列教程01-Centos7安装新版Docker教程(10步)

    最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...

  2. [Abp 源码分析]十一、权限验证

    0.简介 Abp 本身集成了一套权限验证体系,通过 ASP.NET Core 的过滤器与 Castle 的拦截器进行拦截请求,并进行权限验证.在 Abp 框架内部,权限分为两块,一个是功能(Featu ...

  3. ASP.NET Core WebApi AspNetCoreRateLimit 限流中间件学习

    AspNetCoreRateLimit介绍: AspNetCoreRateLimit是ASP.NET核心速率限制框架,能够对WebApi,Mvc中控制限流,AspNetCoreRateLimit包包含 ...

  4. 阿里云ACE共创空间——MQ消息队列产品测试

    一.产品背景消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询.定时(延时)消息.资源统计.监控报警等一系列消息云服务,是企业级互联网架构 ...

  5. DHTMLX 常用技术

    GRID的行设置前景色和背景色 $dataItem->set_row_color("red"); // 设置背景色 $dataItem->set_row_style(& ...

  6. VS Code调试.Net Core版Hello World

    安装C#插件 下载安装插件,地址:https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp 安装插件之后重新启动VS C ...

  7. WPF 窗口大小自适应

    在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题. 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 界面设 ...

  8. Java开发笔记(十二)布尔变量论道与或非

    在编程语言的设计之初,它们除了可以进行数学计算,还常常用于逻辑推理和条件判断.为了实现逻辑判断的功能,Java引入了一种布尔类型boolean,用来表示“真”和“假”.该类型的变量只允许两个取值,即t ...

  9. TF.VARIABLE、TF.GET_VARIABLE、TF.VARIABLE_SCOPE以及TF.NAME_SCOPE关系

    1. tf.Variable与tf.get_variable tensorflow提供了通过变量名称来创建或者获取一个变量的机制.通过这个机制,在不同的函数中可以直接通过变量的名字来使用变量,而不需要 ...

  10. css——rgba()和opacity的区别

    (学习笔记) 首先他们都能实现透明效果,不同的是作用对象. rgba()是css中设置背景颜色中的一个属性.而opacity是css的一个属性,也就是rgba()的作用对象是元素的背景颜色或元素的颜色 ...