0

SimpleXMLを使用してPHPでXMLドキュメントを解析したいと思います。使用simplexml_load_fileしましたが、次のエラーが発生しました:

Warning: simplexml_load_file(): [myfile] parser error : XML declaration allowed only at the start of the document in /www/[...]/myphpfile.php on line 7

Googleで検索しましたが、問題はXMLドキュメントのタグの前に空白があることです。以前に空白がないことを確認しました。

これが私のコードです:

libxml_use_internal_errors(true);
$sxml=simplexml_load_file($xml);
if ($sxml) {
 echo '<h2>'.$xml.'</h2>';
 echo '<p>author: <textarea>';
 foreach($sxml->author as $author) {
  if($author!=$strXML)
   echo $author.'\n';
  }
  echo '</textarea></p>';
}else {
  echo "Failed loading XML\n";
  foreach(libxml_get_errors() as $error)
    echo "\t", $error->message;
}

編集:エラーはFailed loading XML XML declaration allowed only at the start of the document Extra content at the end of the document

XMLドキュメントの最初のタグは<?xml version="1.0" encoding="UTF-8"?>

4

4 に答える 4

2

見つけたとします(実際にこのエラーに初めて遭遇しました)。

  1. 最初の行が<?xml ...(エラーなし)で始まるXMLファイルを試しました
  2. 最初の行が[space or/and new line]<?xml ...(エラーあり)で始まる XML ファイルを試しました

// どちらもエラー (xml.xml の内容)

<?xml version="1.0" encoding="UTF-8"?>
<応答>
// と
 <?xml version="1.0" encoding="UTF-8"?>
<応答>


$xml = simplexml_load_file("xml.xml");
$xml = new SimpleXMLElement(file_get_contents("xml.xml"));

<?xml ...したがって、XML ファイルが有効な XML タグ (つまり 1. 行) で始まることを確認し、最初の行からすべてのスペースを削除します。

于 2013-01-29T18:35:54.247 に答える
0

最初に $xsml を宣言してから、if で使用します。

于 2013-01-29T17:36:42.023 に答える