php 解析xml cdata,PHP SimpleXML 对有CDATA的xml解析问题 | 瑕疵学院 – 学习无瑕疵,成就有保障...
$xml_data = file_get_contents('a.xml');
$simplexml = simplexml_load_string($xml_data);
print_r($simplexml);
?>
结果
SimpleXMLElement Object
(
[show] => Array
(
[0] =>SimpleXMLElement Object
(
[name] => The Simpsons
)
[1]=> SimpleXMLElement Object
(
[name] => That '70s Show
)
[2]=> SimpleXMLElement Object
(
[name] => Family Guy
)
[3]=> SimpleXMLElement Object
(
[name] => SimpleXMLElement Object
(
)
)
)
)
更新完善后的:
$xml_data = file_get_contents('a.xml');
$xml_data = uncdata($xml_data);
$simplexml = simplexml_load_string($xml_data);
print_r($simplexml);
function uncdata($xml)
{
// States:
//
// 'out'
// '
// '
// '
// '
// '
// '
// '
// 'in'
// ']'
// ']]'
//
// (Yes, thestates a represented by strings.)
//
$state = 'out';
$a =str_split($xml);
$new_xml = '';
foreach ($a AS$k => $v) {
// Dealwith "state".
switch ($state ) {
case'out':
if( '
$state = $v;
}else {
$new_xml .= $v;
}
break;
case'
if( '!' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( '[' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( 'C' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( 'D' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( 'A' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( 'T' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( 'A' == $v ) {
$state = $state . $v;
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'
if( '[' == $v ) {
$cdata = '';
$state = 'in';
}else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case'in':
if( ']' == $v ) {
$state = $v;
}else {
$cdata .= $v;
}
break;
case']':
if( ']' == $v ) {
$state = $state . $v;
}else {
$cdata .= $state . $v;
$state = 'in';
}
break;
case']]':
if( '>' == $v ) {
$new_xml .= str_replace('>','>',
str_replace('>','<',
str_replace('"','"',
str_replace('&','&',
$cdata))));
$state = 'out';
} else {
$cdata .= $state . $v;
$state = 'in';
}
break;
} // switch
}
return$new_xml;
}
?>
php 解析xml cdata,PHP SimpleXML 对有CDATA的xml解析问题 | 瑕疵学院 – 学习无瑕疵,成就有保障...相关推荐
- Java基础加强重温_13:XML(可拓展标记语言)、XML语法、XML约束、XML解析(Dom4j,JAXP)、Dom4j基本使用、Xpath表达式(XML路径语言)、XML解析综合案例
摘要 Java基础加强重温_13: XML(可拓展标记语言.作用:小型数据库.框架配置文件.不同平台数据交换). XML语法(文档.标签/元素.属性.注释.转义字符.CDTA区) XML约束(DTD约 ...
- 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )
文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...
- XML与web开发-01- 在页面显示和 XML DOM 解析
前言: 关于 xml 特点和基础知识,可以菜鸟教程进行学习:http://www.runoob.com/xml/xml-tutorial.html 本系列笔记,主要介绍 xml 在 web 开发时需要 ...
- 解析xml_QT开发(四十四)——流方法解析XML
一.流方法解析XML简介 QT 4.3开始,QT引入了两个新的类来读取和写入XML文档:QXmlStreamReader和QXmlStreamWriter. QXmlStreamReader类提供了一 ...
- python读取xml文件有哪些方法_深入解读Python 解析xml的几种方式
一,概述 在XML解析方面,Python贯彻了自己开箱即用batteries included的原则, 在自带的标准库中,python提供了大量可以用于处理XML语言的包和工具 二,正文 1,什么是X ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- XML文档定义有几种形式?解析XML文档有哪几种方式?
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上 ...
- linux中从内存解析xml格式的库,Linux下使用libxml库解析xml文件
目录 libxml简介 libxml库安装 libxml2中的数据类型和函数 xml文档解析实例 运行结果 libxml简介 libxml是一个用于解析xml文件的库,在各个平台下都能使用,也支持多种 ...
- python xml快速解析_在Python中使用Expat进行快速XML解析
Python允许通过其内置模块expat读取和处理XML数据.它是一个非验证XML解析器.它创建一个XML解析器对象,并将其对象的属性捕获到各种处理程序函数中.在下面的示例中,我们将看到各种处理程序函 ...
最新文章
- 【Qt】Qt再学习(十六):QObject::connect: Cannot queue arguments of type ‘QString‘
- Makefile常用信息查询页
- springboot入门_shiro
- python打开另一个程序_python 新手问题啊,为什么我运行一个python程序,另一个就会自动退出呢?始终只能运行一个...
- java 1.8新增功能_Java 8的新增功能(第二部分-可能会出现什么)
- Quick BI产品核心功能大图(六)开放集成
- android侧滑菜单ui,Android:UI控件DrawerLayout、Fragment、SlidingLayout侧滑菜单
- python操作docx入门教程
- Javascript校验含中文的字符串长度
- Redis云管理平台CacheCloud
- 为什么说12306比淘宝双十一的技术挑战更大?
- 2NE1 AON北京演唱会
- 敏捷项目管理 第2版[JimHighsmith](一)
- 批量压缩图片软件 JAVA
- ballerina 学习二十七 项目k8s部署 运行
- 看最强大脑的数字华容道,尝试理解与总结
- stm32-DHT11原理及代码解读
- 08级北京大学计算机学院李益,保送北京大学2008届的研究生花名册.pdf
- 统计单词的数量----Python
- 中科院京区博士生申请申根(德国)签证流程