php中simplexml_load_file中CDATA数据不显示的问题

<?php 
$data='<rss version="2.0"> <channel> <title>潮州环保公众网</title> <image> <title>www.gdczepb.gov.cn</title> <link>http://www.gdczepb.gov.cn</link> <url>http://www.gdczepb.gov.cn/logo.png</url> </image> <description>潮州环保公众网</description> <link>http://www.gdczepb.gov.cn</link> <language>zh-cn</language> <generator>www.gdczepb.gov.cn</generator> <copyright>Copyright©2014 潮州市环境保护局 版权所有</copyright> <item> <title> <![CDATA[ 刑拘1人!潮安区环保公安深夜突袭非法电解工场 ]]> </title> <author> <![CDATA[ 潮州环保公众网 ]]> </author> <link> <![CDATA[ http://www.gdczepb.gov.cn/detail/24638 ]]> </link> <category> <![CDATA[ 工作动态 ]]> </category> <pubDate> <![CDATA[ 2017-03-10 10:26:42 ]]> </pubDate> <comments/> <description> <![CDATA[ 刑拘1人!潮安区环保公安深夜突袭非法电解工场 ]]> </description> </item> </channel> </rss> ';
$aa=simplexml_load_string($data,'SimpleXMLElement',LIBXML_NOCDATA);
echo "<pre>";
// print_r($aa);
print_r($aa->xpath('channel/item'));
echo "</pre>";
 ?>

看看是不是可以!直接出结果,直接进入item输出结果,是不是非常简单!下一篇说一说直接从div里面取内容!不需要插件,直接取!采用dom方法,多多交流哦!

这里写图片描述

对了,这里面还可以删除添加元素,具体的看一下手册,删除的话使用unset。

    /**
     * 将xml转换为数组
     * @param string $xml:xml文件或字符串
     * @return array
     */
    public function xmlToArray($xml)
    {
        //考虑到xml文档中可能会包含<![CDATA[]]>标签,第三个参数设置为LIBXML_NOCDATA
        if (file_exists($xml)) {
            libxml_disable_entity_loader(false);
            $xml_string = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
        } else {
            libxml_disable_entity_loader(true);
            $xml_string = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
        }
        $result = json_decode(json_encode($xml_string), true);
        return $result;
    }

    /**
     * 将数组转换为xml
     * @param array $arr:数组
     * @param object $dom:Document对象,默认null即可
     * @param object $node:节点对象,默认null即可
     * @param string $root:根节点名称
     * @param string $cdata:是否加入CDATA标签,默认为false
     * @return string
     */
    public function arrayToXml($arr, $dom = null, $node = null, $root = 'xml', $cdata = false)
    {
        if (!$dom) {
            $dom = new DOMDocument('1.0', 'utf-8');
        }
        if (!$node) {
            $node = $dom->createElement($root);
            $dom->appendChild($node);
        }
        foreach ($arr as $key => $value) {
            $child_node = $dom->createElement(is_string($key) ? $key : 'node');
            $node->appendChild($child_node);
            if (!is_array($value)) {
                if (!$cdata) {
                    $data = $dom->createTextNode($value);
                } else {
                    $data = $dom->createCDATASection($value);
                }
                $child_node->appendChild($data);
            } else {
                arrayToXml($value, $dom, $child_node, $root, $cdata);
            }
        }
        return $dom->saveXML();
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SHUIPING_YANG

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值