#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