php内置方法解析xml数据
2021-03-17 04:25
标签:link str 忽略 就是 asp gui The 方法 laravel框架 我的xml数据是一个文件,就是导出的cnblogs的博客文件。 这种解析的数据都是类的格式。如下所示: 可以直接使用 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。 在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。 如果读取cdata数据,转换为string即可。 php内置方法解析xml数据 标签:link str 忽略 就是 asp gui The 方法 laravel框架 原文地址:https://www.cnblogs.com/hxsen/p/12790357.html说明
下面使用php内置的三种方式,解析它,并没有使用安装包。因为我是用的laravel框架的调试的,所以里面,会充斥着laravel语法。获取方式
$content = Storage::get(‘cnblogs/CNBlogs_BlogBackup_131_201904_202004.xml‘);
$dom = new \SimpleXMLElement($content);
$content = Storage::get(‘cnblogs/CNBlogs_BlogBackup_131_201904_202004.xml‘);
$dom = simplexml_load_string($content);
$dom = simplexml_load_file(storage_path(‘/app/cnblogs/CNBlogs_BlogBackup_131_201904_202004.xml‘));
结果
SimpleXMLElement {#490 ▼
+"@attributes": array:1 [?]
+"channel": SimpleXMLElement {#497 ▼
+"title": "博客园-houxin"
+"link": "https://www.cnblogs.com/hxsen/"
+"description": SimpleXMLElement {#498}
+"language": "zh-cn"
+"lastBuildDate": "Mon, 27 Apr 2020 12:58:41 GMT"
+"pubDate": "Mon, 27 Apr 2020 12:58:41 GMT"
+"ttl": "60"
+"item": array:23 [▼
0 => SimpleXMLElement {#499 ▼
+"title": "laravel框架简易对接网易163邮件"
+"link": "http://www.cnblogs.com/hxsen/archive/2020/04/25/12773638.html"
+"author": "houxin"
+"pubDate": "Sat, 25 Apr 2020 08:33:00 GMT"
+"guid": "http://www.cnblogs.com/hxsen/archive/2020/04/25/12773638.html"
+"description": SimpleXMLElement {#524}
}
1 => SimpleXMLElement {#500 ?}
2 => SimpleXMLElement {#501 ?}
3 => SimpleXMLElement {#502 ?}
]
}
}
->
函数获取。
建议直接使用就行了,不要再转换成数组形式了。折腾来折腾去,不仅麻烦,还行影响性能。关于对象的好处,请自行查询。都21世纪了,原油都跌成了负数了,还抱着老一辈学习的古老知识,觉得美美的,殊不知都过时了。CDATA的说明
在 XML 元素中,"
"
"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。
某些文本,比如 JavaScript 代码,包含大量 "
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 "" 结束:
例如这样:
关于 CDATA 部分的注释:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
更多说明,请参加w3c文档CDATA的提取
一般的xml解析器,是自动忽略CDATA的解析的,但是并不是意味着,它不存在。SimpleXMLElement {#491 ▼
+"title": "laravel框架简易对接网易163邮件"
+"link": "http://www.cnblogs.com/hxsen/archive/2020/04/25/12773638.html"
+"author": "houxin"
+"pubDate": "Sat, 25 Apr 2020 08:33:00 GMT"
+"guid": "http://www.cnblogs.com/hxsen/archive/2020/04/25/12773638.html"
+"description": SimpleXMLElement {#500}
}
description
就是一个CDATA
的值,它被解析成了SimpleXMLElement
类。使用的时候,直接把它转成string
即可。$dom = simplexml_load_file(storage_path(‘/app/cnblogs/CNBlogs_BlogBackup_131_201904_202004.xml‘));
foreach($dom->channel->item as $item){
$content = strval($item->description);
}