2011-09-29 117 views
1

Simplexml_load_string正在删除大量传入它的内容。Simplexml_load_string()删除大量内容

var_dump($cleaned); 
<item> 
    <title><![CDATA[Honda Motor Company: Motorcycles to the Civic and Accord]]></title> 
    <link>http://www.link.com/index.php?id=9987</link> 
    <description><![CDATA[Though this company is famous for its cars, it actually started as a motorcycle manufacturer. http://www.link.com takes a look at the history of the Honda Motor Company, from its popular motorcycles to the Civic and the Accord.]]> </description> 
    <pubDate>Fri, 23 Sep 2011 10:55:50 -0400</pubDate> 
    <guid>https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4</guid> 
    <media:title><![CDATA[Honda Motor Company: Motorcycles to the Civic and Accord]]> </media:title> 
<media:description><![CDATA[Though this company is famous for its cars, it actually started as a motorcycle manufacturer. http://www.link.com takes a look at the history of the Honda Motor Company, from its popular motorcycles to the Civic and the Accord.]]></media:description> 

<media:keywords><![CDATA[Honda Motor Company, Honda, motorcycles, Japan, Civic, Accord, Formula 1, F1, Acura, fuel efficiency, hybrid, ASIMO, robot, aviation, Dream D, Isle of Man races, Super Cub, auto, automotive, automobile, automaker, cars, driving, history, Soichiro Honda]]></media:keywords> 
<media:tags><![CDATA[Asian History, Automakers, Company Profiles, Honda Motor Company, Honda, motorcycles, Japan, Civic, Accord, Formula 1, F1, Acura, fuel efficiency, hybrid, robot, aviation, auto, automotive, automobile, automaker, cars, driving, history, Soichiro Honda]]></media:tags> 
<media:category><![CDATA[/Video/Auto/Reviews and Profiles]]></media:category> 
<media:thumbnail url="http://link.cloudfront.net/images/linkthumbs/A-RP-Honda-480i60_100x57.jpg"/> 
<media:content url="https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4" type="video/mp4" > 
    <media:thumbnail url="http://link.cloudfront.net/images/linkthumbs/A-RP-Honda-480i60_100x57.jpg"/> 
    <media:player url="http://www.link.com/index.php?id=9987"><![CDATA[<embed src="https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4" type="application/x-shockwave-flash" wmode="transparent" width="480" height="270"></embed>]]></media:player> 
    <media:text_content><![CDATA[Long description.]]></media:text_content> 
    <media:filename><![CDATA[]]></media:filename> 

    <media:author><![CDATA[Rebecca Brayton]]></media:author> 
    <media:bliptv_thumbnail><![CDATA[A-RP-Honda-480i60_480x270.jpg]]></media:bliptv_thumbnail> 
    <media:preference_rate><![CDATA[4]]></media:preference_rate> 
</media:content> 

运行下面

$xml = simplexml_load_string(utf8_encode($cleaned), 'SimpleXMLElement', LIBXML_NOCDATA); 

代码后它返回

["item"]=> 
array(100) { 
    [0]=> 
    object(SimpleXMLElement)#4 (5) { 
    ["title"]=> 
    string(56) "Honda Motor Company: Motorcycles to the Civic and Accord" 
    ["link"]=> 
    string(42) "http://www.link.com/index.php?id=9987" 
    ["description"]=> 
    string(232) "long description." 
    ["pubDate"]=> 
    string(31) "Fri, 23 Sep 2011 10:55:50 -0400" 
    ["guid"]=> 
    string(74) "https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4" 
    } 

没有其他的代码被此之前跑了,我似乎无法弄清楚为什么地球上这发生。任何人都知道背后的原因,是由于UTF-8编码?

回答

1

你需要调用SimpleXMLElement->children()"media"命名空间来获得它们的<media:xxx>一种格式的部分,或$ns参数传递给simplexml_load_string()指定要加载的命名空间:

$xml = simplexml_load_string(utf8_encode($cleaned), 'SimpleXMLElement', LIBXML_NOCDATA, 'media'); 

http://www.php.net/manual/en/function.simplexml-load-string.php

http://www.php.net/manual/en/simplexmlelement.children.php

+0

我试过你的方法,并因为它看起来它应该工作,但它的返回空 例如 对象(SimpleXMLElement)#1(0){} – Bankzilla

+0

可能是因为顶级'item'不是'media'命名空间中的东西 - 因此我为什么建议'item-> children('media')' 。 – Amber

+0

感谢您的帮助琥珀:)您的帖子指出我在正确的方向。跟随这个博客,它的工作http://blog.sherifmansour.com/?p=302 – Bankzilla