Simplexml_load_string () удаляет много контента - PullRequest
1 голос
/ 30 сентября 2011

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 Ответ

1 голос
/ 30 сентября 2011

Вам необходимо вызвать 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

...