Как исправить ошибку XML следующим образом - PullRequest
0 голосов
/ 31 августа 2009

У меня есть XML-файл, подобный этому:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

И я пишу код на своей странице php:

<? php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
   print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
?> 

Вывод кода выше:

#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =

Я знаю, что когда генерируется XML, он часто содержит пробелы между узлами. Но любой может помочь мне пройти через все элементы элемента обхода пробелов XML между узлами. Я имею в виду цикл через все реальные элементы элемента. Пожалуйста, помогите мне.

Ответы [ 3 ]

4 голосов
/ 31 августа 2009

Попробуйте это

$xmlDoc = new DOMDocument();
$xmlDoc->preserveWhiteSpace = false; 
$xmlDoc->load("note.xml");
2 голосов
/ 31 августа 2009

Если вы просто хотите перебрать элементы (и не делать ничего такого, как переупорядочивание элементов и т. Д.), Я бы пошел на расширение simplexml, которое делает работу с XML намного более сложной. простой:

$xml = simplexml_load_file('note.xml');
foreach ($xml as $node) {
    echo $node->getName() . ' = ' . (string)$node . '<br />';
}
0 голосов
/ 31 августа 2009

Что бы вы ни делали, это будет просто симптоматическое лечение. Во-первых, XML-файл не должен содержать эти символы новой строки, поскольку все, что находится между закрывающим> и открывающим <, считается текстовым элементом.

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