не удается получить какие-либо результаты или распечатать при получении атрибута с узла XML с использованием объекта DOM в PHP - PullRequest
0 голосов
/ 04 февраля 2010

Вот пример файла ticketcity.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>

и скрипт 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++;
}

У меня есть $ i для отладки, так что у меня вообще есть распечатка ... Проблема в том, что у меня ничего нет. Я не получаю абсолютно никаких распечаток ни с чем, кроме "xml загружен, начало обновления
"

Сценарий не может быть проще, и он отлично работает с другим XML-файлом, единственное различие между этим и другим XML-файлом заключается в том, что данные другого файла хранятся в значениях узла, а не в атрибутах Я схожу с ума по этому, что я скучаю?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2010

Вы должны попытаться сделать это:

$ticketcity = new DOMDocument();
if (!$ticketcity->load("ticketcity.xml"))
   echo "there was some kind of issue fetching the document";
else { 
   // your code...
}

$ticketcity всегда будет содержать объект класса DOMDocument, но load возвращает false при ошибке:

Возвращает TRUE в случае успеха или FALSE в случае ошибки. Если вызывается статически, возвращает DOMDocument и выдает предупреждение E_STRICT.

0 голосов
/ 04 февраля 2010

Я только что запустил это на моей локальной машине, и он отлично работает:

<?
$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++;
    }
}

Я подозреваю, что файл отсутствует, потому что DOMDocument все равно попадет в предложение else, даже если он не смог загрузить документ. $ ticketcity не будет пустым!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...