php expat+DOM+SimpleXML XML读取
XML 文件
将在我们的例子中使用下面的 XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
初始化 XML 解析器
我们要在 PHP 中初始化 XML 解析器,为不同的 XML 事件定义处理器,然后解析这个 XML 文件。
例子
<?php//Initialize the XML parser $parser=xml_parser_create();//Function to use at the start of an element function start($parser,$element_name,$element_attrs){switch($element_name){case "NOTE":echo "-- Note --<br />";break; case "TO":echo "To: ";break; case "FROM":echo "From: ";break; case "HEADING":echo "Heading: ";break; case "BODY":echo "Message: ";}}//Function to use at the end of an element function stop($parser,$element_name){echo "<br />";}//Function to use when finding character data function char($parser,$data){echo $data;}//Specify element handler xml_set_element_handler($parser,"start","stop");//Specify data handler xml_set_character_data_handler($parser,"char");//Open XML file $fp=fopen("test.xml","r");//Read data while ($data=fread($fp,4096)){xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));}//Free the XML parser xml_parser_free($parser);?>
以上代码的输出:
-- Note -- To: George From: John Heading: Reminder Message: Don't forget the meeting!
工作原理解释:
- 通过 xml_parser_create() 函数初始化 XML 解析器
- 创建配合不同事件处理程序的的函数
- 添加 xml_set_element_handler() 函数来定义,当解析器遇到开始和结束标签时执行哪个函数
- 添加 xml_set_character_data_handler() 函数来定义,当解析器遇到字符数据时执行哪个函数
- 通过 xml_parse() 函数来解析文件 "test.xml"
- 万一有错误的话,添加 xml_error_string() 函数把 XML 错误转换为文本说明
- 调用 xml_parser_free() 函数来释放分配给 xml_parser_create() 函数的内存
加载和输出 XML
我们需要初始化 XML 解析器,加载 XML,并把它输出:
例子
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml");print $xmlDoc->saveXML(); ?>
以上代码的输出:
George John Reminder Don't forget the meeting!
假如您在浏览器窗口中查看源代码,会看到下面这些 HTML:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
上面的例子创建了一个 DOMDocument-Object,并把 "note.xml" 中的 XML 载入这个文档对象中。
saveXML() 函数把内部 XML 文档放入一个字符串,这样我们就可以输出它。
循环 XML
我们要初始化 XML 解析器,加载 XML,并循环 <note> 元素的所有元素:
例子
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml");$x = $xmlDoc->documentElement; foreach ($x->childNodes AS $item){print $item->nodeName . " = " . $item->nodeValue . "<br />";} ?>
以上代码的输出:
#text = to = George #text = from = John #text = heading = Reminder #text = body = Don't forget the meeting! #text =
在上面的例子中,您看到了每个元素之间存在空的文本节点。
当 XML 生成时,它通常会在节点之间包含空白。XML DOM 解析器把它们当作普通的元素,如果您不注意它们,有时会产生问题。
使用 SimpleXML
下面是 XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
我们打算从上面的 XML 文件输出元素的名称和数据。
这是需要做的事情:
- 加载 XML 文件
- 取得第一个元素的名称
- 使用 children() 函数创建在每个子节点上触发的循环
- 输出每个子节点的元素名称和数据
例子
<?php $xml = simplexml_load_file("test.xml");echo $xml->getName() . "<br />";foreach($xml->children() as $child){echo $child->getName() . ": " . $child . "<br />";} ?>
以上代码的输出:
note to: George from: John heading: Reminder body: Don't forget the meeting!
转载于:https://www.cnblogs.com/ouyangping/p/6343468.html
php expat+DOM+SimpleXML XML读取相关推荐
- java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用org.w3c.dom(java dom)解析XML文档,创建.增删查改,保存,读取,遍历元素等操作 在保存文件时需要载入crimso ...
- xml 和android脚本之家,Android利用Document实现xml读取和写入操作
本文实例为大家分享了利用Document实现xml读取和写入操作,供大家参考,具体内容如下 首先先来介绍一下什么xml?xml是可扩展标记语言,他可以用来标记数据,定义数据类型.是一种允许用户对自己标 ...
- java解析xml实例_在java中使用dom解析xml的示例分析
本篇文章介绍了,在java中使用dom解析xml的示例分析.需要的朋友参考下 dom是个功能强大的解析工具,适用于小文档 为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树 总之 ...
- java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...
网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...
- DOM(二)——XML DOM
XML(Extensible Markup Language)可扩展标记语言(可以通过这篇博客简单了解XML基础介绍),DOM(Document ObjectModel)文档对象模型(通过上篇博客了解 ...
- java w3c xml_org.w3c.dom(java dom)解析XML文档
首先来了解点Java DOM 的 API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBui ...
- java dom读写xml文件_java通过dom读写xml文件
java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...
- php dom xml解析,PHP使用DOM解析XML
xml是一种严格的文档格式,有其自身的标准,解析xml,也有其标准,叫DOM标准.所有的xml.html都遵循DOM标准. 无论php,java,c,js,解析DOM树都遵循同样的DOM标准. 使用p ...
- 用JavaScript语言通过DOM遍历XML文档
实验结果要求如下: 解决步骤: 1. 首先是布局,左边用表格比较方便,右边是个div块. 2. 嵌入JavaScript脚本,由易到难,写定义全部显示的功能函数.显示姓名功能函数,显示属性功能函数 ...
最新文章
- 花了我一个晚上浓缩了一整套阿里资深技术专家设计教程整理出的java架构设计方法
- 技术人员突围就业寒冬的最优途径 | 拿不到AI核心岗位Offer全额退款
- MFC中的资源视图和如何打开资源视图
- 大数据系列修炼-Scala课程07
- win服务器是如何发展到现在的?
- 修改VMOS2的SID 并成为成员服务器,求助SAS9.4服务器版的sid!!!急急!
- 合理支配“财富”:经理人运用时间的12种典型模式
- chrome导出插件
- Fiddler抓包详解
- linux阻止程序,Linux:阻止某些应用程序/主机名的IPv6
- 【Flutter】微信项目实战【06】 通讯录界面搭建(中)
- 我的springboot+vue前后端分离权限脚手架
- angular4与高德地图的结合
- 更新一些CAD中比较容易混淆的概念
- Greenplum小把戏 - 简单函数实现URL解码(URL Decode)- 同样适用于Deepgreen和PostgreSQL...
- SaaS系统权限体系设计
- 大专考试计算机英语题目,专科英语入学考试题
- 机器人中的xyz坐标系和右手定则
- python speed为0但是速度过快_python代码加速
- 幻方问题__技巧解法