在php中使用dom对象从xml节点获取属性时,无法获得任何结果或打印输出

在php中使用dom对象从xml节点获取属性时,无法获得任何结果或打印输出,php,xml,dom,Php,Xml,Dom,下面是ticketcity.xml文件im使用的示例: <Events Version="3.0" Method="GetEvents" StatusCode="0" StatusMsg="Success"> − <Event ID="569402" Name="Hair" SeatingChart="http://www.ticketcity.com/images/seatingcharts/MARTINBECK_THEATRE_NYC.GIF" Page="

下面是ticketcity.xml文件im使用的示例:

<Events Version="3.0" Method="GetEvents" StatusCode="0" StatusMsg="Success">
    −
    <Event ID="569402" Name="Hair" SeatingChart="http://www.ticketcity.com/images/seatingcharts/MARTINBECK_THEATRE_NYC.GIF" Page="http://www.ticketcity.com/theatre-tickets/broadway-tickets/hair-tickets/hair-tickets-al-hirschfeld-theatre-february-3-200pm.html" EventDateTime="02/03/2010 2:00PM">
    <Performer ID="463" Name="Hair" Primary="true"/>
    −
    <Venue ID="961" Name="Al Hirschfeld Theatre">
    <City ID="36469" Name="New York"/>
    <State ID="34" Abbr="NY" Name="New York"/>
    <Country ID="1" Abbr="US" Name="United States"/>
    </Venue>
    </Event>
    −
</Events>

−
−
−
以及获取数据的php脚本:

$ticketcity = new DOMDocument();
$ticketcity->load("ticketcity.xml");
if (empty($ticketcity))
 echo "there was some kind of issue fetching the document";
else { 
echo "xml loaded, beginning update<br>\n";

$events = $ticketcity->getElementsByTagName("Event");

$i=0;
foreach ($events as $event){
 echo $i."<br>\n";
 $eventid = $event->getAttribute('ID');
 $eventname = $event->getAttribute('Name');
 $eventmap = $event->getAttribute('SeatingChart');
 $eventpage = $event->getAttribute('Page');
 echo "$eventid, $eventname, $eventmap, $eventpage<br>\n";
 $i++;
}
$ticketcity=newDOMDocument();
$ticketcity->load(“ticketcity.xml”);
if(空($ticketcity))
echo“获取文档时出现了某种问题”;
否则{
echo“已加载xml,开始更新
\n”; $events=$ticketcity->getElementsByTagName(“事件”); $i=0; foreach($events作为$event){ 回显$i.“
\n”; $eventid=$event->getAttribute('ID'); $eventname=$event->getAttribute('Name'); $eventmap=$event->getAttribute('SeatingChart'); $eventpage=$event->getAttribute('Page'); echo“$eventid、$eventname、$eventmap、$eventpage
\n”; $i++; }
我那里有$I只是为了调试,所以我会有一些打印输出…问题是我没有任何东西。除了“xml加载,开始更新
”之外,我完全没有任何打印输出


脚本再简单不过了,它可以与另一个XML文件配合使用,它与另一个XML文件的唯一区别是,另一个文件的数据存储在节点值中,而不是属性中……我对此非常着迷,我缺少什么?

我刚刚在本地计算机上运行了此脚本,它工作正常:

<?
$xml = '<Events Version="3.0" Method="GetEvents" StatusCode="0" StatusMsg="Success">
    −
    <Event ID="569402" Name="Hair" SeatingChart="http://www.ticketcity.com/images/seatingcharts/MARTINBECK_THEATRE_NYC.GIF" Page="http://www.ticketcity.com/theatre-tickets/broadway-tickets/hair-tickets/hair-tickets-al-hirschfeld-theatre-february-3-200pm.html" EventDateTime="02/03/2010 2:00PM">
    <Performer ID="463" Name="Hair" Primary="true"/>
    −
    <Venue ID="961" Name="Al Hirschfeld Theatre">
    <City ID="36469" Name="New York"/>
    <State ID="34" Abbr="NY" Name="New York"/>
    <Country ID="1" Abbr="US" Name="United States"/>
    </Venue>
    </Event>
    −
</Events>
';

$ticketcity = new DOMDocument();
$ticketcity->loadXML($xml);
if (empty($ticketcity))
 echo "there was some kind of issue fetching the document";
else { 
    echo "xml loaded, beginning update<br>\n";
    $events = $ticketcity->getElementsByTagName("Event");

    $i=0;
    foreach ($events as $event){
     echo $i."<br>\n";
     $eventid = $event->getAttribute('ID');
     $eventname = $event->getAttribute('Name');
     $eventmap = $event->getAttribute('SeatingChart');
     $eventpage = $event->getAttribute('Page');
     echo "$eventid, $eventname, $eventmap, $eventpage<br>\n";
     $i++;
    }
}
loadXML($xml);
if(空($ticketcity))
echo“获取文档时出现了某种问题”;
否则{
echo“已加载xml,开始更新
\n”; $events=$ticketcity->getElementsByTagName(“事件”); $i=0; foreach($events作为$event){ 回显$i.“
\n”; $eventid=$event->getAttribute('ID'); $eventname=$event->getAttribute('Name'); $eventmap=$event->getAttribute('SeatingChart'); $eventpage=$event->getAttribute('Page'); echo“$eventid、$eventname、$eventmap、$eventpage
\n”; $i++; } }

我怀疑文件丢失了,因为即使DOMDocument无法加载文档,它仍会命中else子句。$ticketcity不会为空!

您应该尝试执行以下操作:

$ticketcity = new DOMDocument();
if (!$ticketcity->load("ticketcity.xml"))
   echo "there was some kind of issue fetching the document";
else { 
   // your code...
}
$ticketcity
将始终包含类为
DOMDocument
的对象,但失败时返回
false

成功时返回TRUE,失败时返回FALSE。如果静态调用,则返回DOMDocument并发出E_STRICT警告


你的日志中有任何错误吗?我想可能解析器会因为一个致命的错误而死亡……连字符是怎么回事?我猜最后缺少的
}
只是一个输入错误,你的代码中有它?