在php中使用dom对象从xml节点获取属性时,无法获得任何结果或打印输出
下面是ticketcity.xml文件im使用的示例:在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="
<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警告
你的日志中有任何错误吗?我想可能解析器会因为一个致命的错误而死亡……连字符是怎么回事?我猜最后缺少的
}
只是一个输入错误,你的代码中有它?