2011-05-10 127 views
0

我在使用simplexml_load_file()使用非标准XML文件时遇到问题。这里是我的代码:从XML文件simplexml_load_file()与非标准XML文件

<?php 
$file = 'http://www.gostanford.com/data/xml/events/m-baskbl/2010/index.xml'; 
$xml = simplexml_load_file($file); 

echo 'Displaying user names of XML file...<br />'; 
foreach($xml as $event_date){ 
    echo 'Home: '.$event_date->hn.'<br />'; 
} 

?> 

正如你所看到的,什么都没有输出,仅回显的“家”

任何帮助是极大的赞赏。

+0

什么是标准的XML文件?你能否提供一个有问题的xml文件的示例... – ircmaxell 2011-05-10 23:47:38

+0

更具体地说,什么是“非标准XML文件”?它可以是XML,也可以不是。除非你想将粉笔描述为非标准的奶酪。 – 2011-05-11 10:04:21

回答

3

这是XML数据,没有什么非标一下:

<game_days> 
    <event_date date="20101023"> 
     <event id="1271699" local_time="6:00 PM PT" eastern_time="21:00" hc="stan" vc="" hn="Stanford" vn="" hs="" vs=""/> 
    </event_date> 

你正在寻找的属性是下面一个元素级别<event>
并访问属性改为使用数组语法:

foreach($xml as $event_date){ 
    echo $event_date->event['hn']; 
+0

完美 - 谢谢你马里奥!只是好奇,为什么把括号/撇号中的语法括起来更好?我可能需要更新一些其他文件:) – Ryan 2011-05-11 01:21:53

+0

它不适用于' - > attr'。这就是SimpleXML的行为。只有使用数组符号才能访问属性,所以使用'foreach'迭代节点只会在默认情况下返回子节点。这些属性“有点隐藏”。 – mario 2011-05-11 01:26:55

0

如果非标准你的意思是这里一个不同的命名空间,你可以做什么:

Namespaces

你可以得到的命名空间并使用它像一个“标准的XML”