xml — неверный запрос PHP XMLReader 400

Я пытаюсь начать использовать XMLReader для обработки больших файлов XML, но получаю странный неверный запрос HTTP 400, когда пытаюсь запустить следующий код:

<?php
$reader = new XMLReader ();
$reader->open ( "testfile.xml" );
while ( $reader->read () ) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT) :
echo "&lt;" . $reader->name . "&gt; <br>";
break;
case (XMLREADER::TEXT) :
if ($reader->hasValue) {
echo $reader->value . "<br>";
}
break;
}
}
$reader->close();
?>

Я также попробовал это так и получаю ту же ошибку 400 Bad Request:

<?php
$reader = new XMLReader ();
$reader->open ( "testfile.xml" );
while ( $reader->read() ) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT) :
echo "&lt;" . $reader->name . "&gt; <br>";
$reader->read();
if (($reader->nodeType == XMLREADER::TEXT) && $reader->hasValue) {
echo $reader->value . "<br>";
}
break;
}
}
$reader->close();
?>

В обоих случаях ошибка исчезает, когда я закомментирую echo reader->value ."<br>";, Журналы ошибок Apache ничего не показывают. Кроме того, несмотря на ошибку 400, страница создается и обрабатывается, как и ожидалось, с элементами и текстовыми значениями (т. Е. Код работает, он также выдает ошибку HTTP).

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

Заранее благодарю за любую помощь!

0

Решение

К вашему сведению, если кто-то еще столкнется с этим, я узнал, что мне нужно использовать htmlspecialchars() чтобы избежать значения. Я изменился:

echo $reader->value . "<br>";

в

echo htmlspecialchars($reader->value, ENT_XML1, 'UTF-8') . "<br>";

Думаю, в XML должен быть какой-то html, который браузер пытался интерпретировать, вызывая ошибку 400.

0

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

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

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