2016-06-12 13 views
0

また、この方法は、それを試してみましたが、同じ400不正な要求エラーを取得している。いずれの場合もPHPのXMLReader 400不正な要求

<?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エラーにもかかわらず、ページが作成され、要素とテキスト値で期待どおりにレンダリングされます(つまり、コードは正常に動作しているように見えます)。

ルートが1つの子要素が1つのみの小さな単純なテストXMLファイルでもエラーなしで動作するように見えることにも注意してください。実際に処理しようとしているより複雑なXMLファイルのほうが、エラーが出てきています。

ありがとうございました!

答えて

0

FYI私はこの値にエスケープするのにhtmlspecialchars()を使う必要があることを知りました。私が変更されました:

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

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

にブラウザが400エラーを引き起こして解釈しようとしていたXMLでの一部のHTMLがなければならないと思います。

関連する問題