【问题标题】:PHP : Simplexml parse nodePHP:Simplexml 解析节点
【发布时间】:2014-07-02 21:20:54
【问题描述】:

我有一个用于解析 xml 数据的 php 代码,但它不起作用,我的 php 代码如下所示:

<?php
            $xml = '<?xml version="1.0" encoding="utf-8"?>
                <videos>
                    <video>
                        <id>751985</id>
                        <embed><![CDATA[somehtmlcode]]></embed>
                        <thumbs>
                            <thumb><![CDATA[http://example.com/images/thum01.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum02.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum03.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum04.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum05.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum06.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum07.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum08.jpg></thumb>
                        </thumbs>
                        <link><![CDATA[http://example.com/001]]></link>
                        <title><![CDATA[Some cool title 1]]></title>
                        <categories>
                            <category><![CDATA[Cat1]]></category>
                            <category><![CDATA[Cat2]]></category>
                            <category><![CDATA[Cat3]]></category>
                            <category><![CDATA[Cat4]]></category>
                        </categories>
                        <tags>
                            <tag><![CDATA[tag1]></tag>
                            <tag><![CDATA[tag2]></tag>
                            <tag><![CDATA[tag3]></tag>
                        </tags>
                        <someone>
                        </someone>
                        <duration><![CDATA[8:17]]></duration>
                        <pubDate><![CDATA[2014-05-14]]></pubDate>
                    </video>
                    <video>
                        <id>751988</id>
                        <embed><![CDATA[somehtmlcode]]></embed>
                        <thumbs>
                            <thumb><![CDATA[http://example.com/images/thum01.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum02.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum03.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum04.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum05.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum06.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum07.jpg></thumb>
                            <thumb><![CDATA[http://example.com/images/thum08.jpg></thumb>
                        </thumbs>
                        <link><![CDATA[http://example.com/001]]></link>
                        <title><![CDATA[Some cool title 1]]></title>
                        <categories>
                            <category><![CDATA[Cat1]]></category>
                            <category><![CDATA[Cat2]]></category>
                            <category><![CDATA[Cat3]]></category>
                            <category><![CDATA[Cat4]]></category>
                        </categories>
                        <tags>
                            <tag><![CDATA[tag1]></tag>
                            <tag><![CDATA[tag2]></tag>
                            <tag><![CDATA[tag3]></tag>
                        </tags>
                        <someone>
                        </someone>
                        <duration><![CDATA[8:17]]></duration>
                        <pubDate><![CDATA[2014-05-14]]></pubDate>
                    </video>
                </videos>';



        $sxe = simplexml_load_string($xml);     

        foreach ($sxe->video as $videoChild) {
        echo $videoChild->id; 
        echo $videoChild->title;


        }

?>

它没有得到节点的值,我需要得到 id、embed、thumb、link、title,没有 CDATA 标记。任何帮助都会很棒。

【问题讨论】:

  • 它是回显&lt;![CDATA[somehtmlcode]]&gt;还是什么都没有?为什么还要使用 CDATA 部分?
  • 正确关闭 &lt;![CDATA[]]&gt;thumbtag 标签。在关闭 xml 标记之前必须有 ]]&gt;

标签: php simplexml


【解决方案1】:
 <thumb><![CDATA[http://example.com/images/thum01.jpg></thumb>

[CDATA] 的东西没有正确关闭,simplexml_load_string() 不喜欢这样

试试

 <thumb><![CDATA[http://example.com/images/thum01.jpg]]></thumb>

【讨论】:

  • 那行得通,但是我如何在 foreach 中执行 foreach 以获取所有拇指 url?
  • 目前我只能使用以下方法获取第一个拇指网址:foreach ($videoChild->thumbs as $thumbChild){ echo $thumbChild->thumb."\n"; }
  • 没有更多答案了吗?我需要循环进入拇指以获得拇指
猜你喜欢
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多