PHP DomDocument XML-парсер - PullRequest
       7

PHP DomDocument XML-парсер

1 голос
/ 15 сентября 2011

У меня есть страница php, которая анализирует некоторый текст xml. Этот текст поступает из пользовательского ввода в текстовом поле html.

Всякий раз, когда между узлами есть какие-либо пробелы, синтаксический анализатор Domdocument xml не может правильно проанализировать документ. По сути, он распознает первый узел, но любые вложенные узлы он не может найти.

Удаление пробелов, это работает без проблем.

$xmldoc = new DOMDocument();
$xmldoc->loadXML($rawxml);

$top = $xmldoc->documentElement;
if(!$top) {echo "error: xml config is empty"; exit(-1);}
if($top->nodeName != "config") die("error: expect config tag as first element");


$nameNode = $top->childNodes->item(0);

//Fails here
if($nameNode->nodeName != "name") die("error: expect name tag following config tag");

Работает

<config><name>sdf2</name></config>

не работает

<config>   <name>sdf2</name></config>

1 Ответ

0 голосов
/ 15 сентября 2011

Это ожидаемое поведение. Когда вы загружаете отформатированный XML-документ с DOM, любые пробелы, например, отступы, разрывы строк и значения узлов будут частью DOM как экземпляры DOMText по умолчанию. Вы можете отключить это, выполнив

$xmldoc->preserveWhiteSpace = false;

перед загрузкой XML, который затем отбрасывает все пробелы форматирования. Для более подробного ответа см

...