PHP:如何从这个XML获取关联数组?

时间:2012-10-30 03:13:35

标签: php xml arrays

这是我的代码到目前为止...不用说,它不起作用:(

$feed = <<< THEXML

<programs>
<program>
<date>2009-04-16</date>
<start_time>17:00</start_time>
<leadtext>hello hello!
</leadtext>
<name>Program 1</name>
<b-line>Comedy</b-line>
<synopsis>Funny stuff
</synopsis>
<url>http://www.domain.tld/program_name</url>
</program>
<programs>
THEXML;


$xml  = (array) simplexml_load_string($feed);

print_r($xml);exit;

非常感谢任何帮助,现在已经在php.net网站上工作了好几个小时并且感觉脑力不足。

请注意,在上面的示例xml中只有一个

 <program>...</program>

标签,但实际上我需要使用其中的一个或多个。 例如

 <programs>
 <program>...</program>
 <program>...</program>
 <program>...</program>
 </programs>

我想我是否可以上班,然后我可以循环播放,但我想我会解释一下我的目的。

提前致谢!

2 个答案:

答案 0 :(得分:2)

假设提供程序为您提供了有效的XML,那么您只需要遍历程序并使用它所需的任何信息,如下所示:

<?php
foreach ( $xml as $node ) {
    echo $node->synopsis;
    //or whatever property you want to access on the SimpleXMLElement Object
}

由于您没有正确的XML(作为未公开的<programs>标记,因此您可能希望修改脚本以纠正该错误,如下所示:

$feed = preg_replace('/<programs>$/', '</programs>', trim($feed));

答案 1 :(得分:2)

您错过了结束结束标记。

$feed = <<< THEXML

<programs>
<program>
<date>2009-04-16</date>
<start_time>17:00</start_time>
<leadtext>hello hello!
</leadtext>
<name>Program 1</name>
<b-line>Comedy</b-line>
<synopsis>Funny stuff
</synopsis>
<url>http://www.domain.tld/program_name</url>
</program>
</programs> // <========= here
THEXML;