Не удается прочитать один конкретный узел XML с помощью PHP

#php #xml #xml-parsing

#php #xml #xml-синтаксический анализ

Вопрос:

Я использую PHP для анализа XML-файла и успешно извлекаю данные из файла, за исключением одного конкретного узла. Существует открытый тег с надписью «ImageData», за которым следует блок текста. Блок текста не распознается, и я не могу понять, почему он игнорирует текст, который следует за тегом «ImageData».

Вот соответствующий XML-код:

 <Part>
<Figure>
<ImageData src="images/interbank_img_0.jpg"/>
The text I want is here
</Figure>
  

Это скрипт PHP:

 $xml = simplexml_load_file("rates/interbank.xml");
$test = $xml->Part[0]->Figure[0];
  

Вот результат при выводе $test:

 object(SimpleXMLElement)#3 (1) {
  ["ImageData"]=>
  object(SimpleXMLElement)#2 (1) {
    ["@attributes"]=>
    array(1) {
      ["src"]=>
      string(26) "images/interbank_img_0.jpg"
    }
  }
}
  

Комментарии:

1. Этот ImageData тег не является «открытым», он самозакрывается.

2. Согласно некоторым комментариям здесь: php.net/manual/en/book.simplexml.php очевидно, вам нужно сделать некоторые дополнительные действия, чтобы получить доступ к текстовым узлам.

Ответ №1:

Просто преобразуйте узел в строку

 <?php
//$xml = simplexml_load_file("rates/interbank.xml");
$xml = new SimpleXMLElement('<foo><Part>
<Figure>
<ImageData src="images/interbank_img_0.jpg"/>
The text I want is here
</Figure></Part></foo>');

echo $xml->Part[0]->Figure[0]; // echo casts the "parameters" to string before printing
  

С принтами

 The text I want is here