Simple_xml_load_string с многоуровневыми узлами, не загружающими узел

У меня есть такой XML, в котором есть несколько узлов с макросами (например, {author}) —

<?xml version="1.0"?>
<catalog>
<book id="test">
<author>{author}</author>
<title>{title}</title>
<genre>{genre}</genre>
<price>{price}</price>
<publish_date>{publish_date}</publish_date>
<description>{desciption}</description>
</book>
</catalog>

Выполнение simple_xml_load_string() на вышесказанном не возвращает узел каталога, даже если ошибка не отображается (используя libxml_use_internal_errors(true) и перебирая libxml_get_errors()). Я также проверил XML на http://xmlbeautifier.com/.

Вот вывод simple_xml_load_string() из вышеперечисленных —

SimpleXMLElement Object
(
[book] => SimpleXMLElement Object
(
[author] => {author}
[title] => {title}
[genre] => {genre}
[price] => {price}
[publish_date] => {publish_date}
[description] => {desciption}
)

)

Узел каталога отсутствует.

0

Решение

Каждый документ XML имеет ровно один корневой элемент. Он охватывает все другие элементы и, следовательно, является единственным родительским элементом для всех остальных элементов. Элементы ROOT также называются элементами PARENT. Так что это не пропущенный 1 узел, это просто, как это работает. Если вы хотите имя корневого элемента, попробуйте это:

<?php
$xml = simplexml_load_string($str);
echo $xml->getName();
?>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]