2016-10-10 111 views
0

我是PHP新手,也是XML。我试图从我认为是XML文件的子元素中提取特定元素。用PHP和SimpleXML显示XML子数据

主类是<events><events>类中有多个<event>。我试图从XML文件中提取特定数据并显示它们。

<?php 
$xml = simplexml_load_file('http://xml.pinnaclesports.com/pinnaclefeed.aspx?sporttype=Football&sportsubtype=nfl'); 
foreach($xml->children() as $event){ 
    echo $event->participants->participant->participant_name . ", "; 
    echo $event->participants->participant[1]->participant_name . ", "; 
    echo $event->periods->period->spread->spread_visiting . ", "; 
    echo $event->periods->period->total->over_adjust . "<br>"; 
} 
?> 

这里是输出的,没有PHP error_log中的条目:

, , , 
, , , 
, , , 
, , , 

我明白任何及所有的帮助。

+0

HTTP:// WWW .w3schools.com/php/php_xml_simplexml_get.asp –

+0

我实际上使用它来构建PHP拉,但是,我认为与数据如何XML文件中嵌套的结果是导致结果不能正确拉取,但我无法弄清楚如何从嵌套数据中拉出。 – CRYPTODOOM

回答

0

要访问嵌套元素,可以简单地按照元素路径从上下文元素(event)开始到目标元素。这将是一个更容易看到的,路径/层次,如果你正确的格式将XML:

foreach($xml->children() as $event) { 
    echo $event->participants->participant->participant_name . ", "; 
    echo $event->participants->participant[1]->participant_name . ", "; 
    echo $event->periods->period->spread->spread_visiting . ", "; 
    echo $event->periods->period->total->over_adjust . "<br>"; 
} 

eval.in demo

输出:

Denver Broncos, San Diego Chargers, -3, 101<br> 
+0

非常好,我知道如何指定对象的完整路径。它似乎把XML放入一个字符串,然后修改字符串。是否有任何方式使第三方提供这种工作? – CRYPTODOOM

+0

这样的事情? '<?php $ xml = simplexml_load_file('http://xml.feed.coml')或死(“错误:无法创建对象”); $ xml = simplexml_load_string($ raw); foreach($ xml-> children()为$ event){ echo $ event-> participants-> participant-> participant_name。 “,”; echo $ event-> participants-> participant [1] - > participant_name。 “,”; echo $ event->句号 - >句号 - >传播 - >传播_访谈。 “,”; echo $ event->句号 - >句号 - >总分 - > over_adjust。 “
”; ? } > ' – CRYPTODOOM

+0

我没有收到这个PHP错误,但结果回来空白: children()为$ event){ echo $ event-> participants-> participant-> participant_name。 “,”; echo $ event-> participants-> participant [1] - > participant_name。 “,”; echo $ event->句号 - >句号 - >传播 - >传播_访谈。 “,”; echo $ event->句号 - >句号 - >总分 - > over_adjust。 “
”; } ?> – CRYPTODOOM