4

XMLWriterを使用してxmlを作成しています。以下は正常に機能しているコードです。

<?php
header("Content-Type: text/xml;");
$writer = new XMLWriter(); 
$writer->openMemory();  
$writer->startDocument('1.0'); 
$writer->setIndent(4); 
$writer->startElement('epp'); 
$writer->startElement("command"); 
$writer->startElement("login"); 
$writer->writeElement('clID', 'hello'); //username
$writer->writeElement('pw', 'abcdefg'); //password
$writer->endElement(); //login
$writer->endElement(); //command
$writer->endElement(); //login
$writer->endDocument(); 
$file =  $writer->outputMemory(true); 
echo $file;

?>

以下のコードを使用している場合、「GettingError」というエラーが発生します。以下は最初のエラーまでのページのレンダリングです。

<?php
$time  = time();
echo $time;
header("Content-Type: text/xml;");
$writer = new XMLWriter(); 
$writer->openMemory();  
$writer->startDocument('1.0'); 
$writer->setIndent(4); 
$writer->startElement('epp'); 
$writer->startElement("command"); 
$writer->startElement("login"); 
$writer->writeElement('clID', 'hello'); //username
$writer->writeElement('pw', 'abcdefg'); //password
$writer->endElement(); //login
$writer->endElement(); //command
$writer->endElement(); //login
$writer->endDocument(); 
$file =  $writer->outputMemory(true); 
echo $file;

?>

エラー:上記のコードブロックの場合、以下のエラーがあります:私はこれをグーグルクロームで取得しています:

 This page contains the following errors:

 error on line 1 at column 1: Document is empty
 Below is a rendering of the page up to the first error.

header( "Content-Type:text / xml;");を使用していない場合 次に、上記のコードブロックは機能していますが、時間が表示され、xml形式が提供されていません。以下はエラーです:

1354510317 hello abcdefg

編集: Mozillaで私はエラーを下回っています:

XML Parsing Error: not well-formed
Location: http://localhost/example.php
Line Number 1, Column 11:1354512268<?xml version="1.0"?>
 ----------^

コードに何か問題があった場合は、提案してください。

「以下は、最初のエラーまでのページのレンダリングです。」エラーを取り除くことができますか?

4

3 に答える 3

9

XMLコンテンツの外で時間をエコーすると、それはもはや有効なXMLではなくなり、ブラウザが文句を言う理由になります。

コンテンツタイプをtext/xmlとして指定すると、ブラウザはXMLを解析して読み取り可能な形式でレンダリングするように指示されます。

失敗したコードのソースを表示すると、その後の時間が生のXMLコンテンツであることがわかります。

text / xmlコンテンツタイプを送信しないと正しく表示されない理由は、ブラウザが基本的にXMLタグをHTMLとして認識し、レイアウトを変更することはないと判断しているため、タグ内。

ページで通常の出力とXML出力を混在させたい場合は、XMLを適切にフォーマットし、HTMLでエンコードする必要があります。

于 2012-12-03T05:42:36.760 に答える
2
header("Content-Type: text/xml;");

出力がその形式になるように、そこで使用しているヘッダーのタイプ。

例 :

header("Content-Type: text/xml;");

output : coutput in xml format

header("Content-Type: text/php;");

output : output in php format
于 2014-08-22T18:20:48.123 に答える
-1

多くの場合、このエラーは、終了タグを必要としないHTML要素で発生します。

Bad:  <img src="https://google.com">
Good: <img src="https://google.com"/>
于 2019-10-02T14:56:41.263 に答える