如何在浏览器中将数据显示为xml结构

时间:2011-11-07 14:35:49

标签: php xml

我试图在browser.i中创建一个xml,如

$query2 = "SELECT * FROM user where user_id = 7";
$dbresult = mysqli_query($dbcon,$query2) or die('query error...');

$doc = new DomDocument('1.0');
 $doc->formatOutput = true; 

$root = $doc->createElement('root');
$root = $doc->appendChild($root);

while($row = mysqli_fetch_array($dbresult)) {

  $userId = $doc->createElement('UserId');
  $userId = $root->appendChild($userId);
   $value = $doc->createTextNode($row[0]);
  $value = $userId->appendChild($value);

   $psw = $doc->createElement('Password');
  $psw = $root->appendChild($psw);
   $value = $doc->createTextNode($row[2]);
  $value = $psw->appendChild($value);


} 
echo $doc->saveXML();
$doc->save("test.xml"); 

它只显示

等数据

7 pwd123

但我想要像

这样的数据
<xml>
   <root>
     <userId>7</userId>
     <password>pwd123</password>
   </root>
</xml>

该怎么办? 感谢

3 个答案:

答案 0 :(得分:4)

你的脚本没有set Content-type header而php发送的default content-type header通常是Content-type: text/html
因此,客户端假定数据是一个html文档并解析并显示它 如果客户端/浏览器不“知道”您的文档包含的标签/元素(并且上下文很重要)http://www.w3.org/TR/html401/appendix/notes.html#notes-invalid-docs适用。

如果您“告诉”客户端输出是一个xml文档,它将/可以/应该相应地显示它。

if ( headers_sent() ) {
    // can't set the content-type after output has been sent to the client
    die('error');
}
else {
    header('Content-type: text/xml'); // see http://en.wikipedia.org/wiki/XML_and_MIME
    echo $doc->saveXML();   
}

答案 1 :(得分:1)

更改标题内容类型text / xml

header('Content-type: text/xml');
$doc->saveXML();

有关详细信息,请参阅http://www.w3schools.com/xml/xml_server.asp

答案 2 :(得分:0)

使用右键单击 - &gt;显示源代码命令