簡體   English   中英

PHP XMLReader 400錯誤請求

[英]PHP XMLReader 400 Bad Request

我試圖開始使用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>";時,錯誤都會消失echo reader->value ."<br>"; Apache錯誤日志未顯示任何內容。 同樣,盡管出現了400錯誤,仍會按預期的方式使用元素和文本值來創建和呈現頁面(即,代碼似乎正常工作,它也給出了HTTP錯誤)。

還值得注意的是,它在一個小的,簡單的測試XML文件上似乎沒有錯誤,該文件只有一個根和一個帶有文本的子元素。 我實際上打算處理更大,更復雜的XML文件時才遇到錯誤。

在此先感謝您的幫助!

僅供參考,以防萬一其他人遇到這個問題,我發現我需要使用htmlspecialchars()來轉義該值。 我變了:

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

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

猜猜瀏覽器試圖解釋的XML中肯定有一些html導致了400錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM