从数据库到xml的Php

时间:2017-03-06 19:45:20

标签: php xml

我尝试将数据从数据库导出到XML。我的代码如下:

$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
require_once 'DataBase.php';
$db=new DataBase();
$db->query("SELECT * FROM markers WHERE 1");
$db->execute();
$arr = $db->resultset();
header("Content-type: text/xml");
foreach ($arr as $row){
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("name",$row['name']);
$newnode->setAttribute("address", $row['address']);
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("lng", $row['lng']);
$newnode->setAttribute("type", $row['type']);
}
echo $dom->saveXML();

但是当我运行我的PHP文件时,我得到了一个空窗口(并没有得到任何错误)。我的数组不是空的,我查了一下。 有什么问题?我该如何解决?

我检查它是否在Chrome中有效,但在Mozilla浏览器中无效...

2 个答案:

答案 0 :(得分:0)

由于某种原因,在您的情况下,FF无法识别内容类型标题。这意味着输出呈现为HTML - 而不是XML。作为HTML阅读,它只包含一些带有属性的未知标签 - 无需显示。

使用浏览器的开发者工具。从那里检查响应内容是否是您期望的XML并且响应头是正确的。

它应该允许您找到问题的原因。

答案 1 :(得分:-1)

这是我的示例实现,它适用于firefox和chrome,但它使用simplexml而不是dom。

此外,sql被修改为"其中1"对我来说没什么意义;)

<?php

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><markers></markers>');

    $user = 'username';
    $pass = 'password';
    $host = '127.0.0.1';
    $dbname = 'testdb';
    $db = 'pgsql';

     $db = new PDO($db . ':host=' . $host . ';dbname=' . $dbname, $user, $pass);

    $result = $db->query("SELECT * FROM markers ");

  $arr = $result->fetchAll(PDO::FETCH_ASSOC);

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

foreach ($arr as $row){
$newnode = $xml->addChild("marker");
$newnode->addAttribute("name",$row['name']);
$newnode->addAttribute("address", $row['address']);
$newnode->addAttribute("lat", $row['lat']);
$newnode->addAttribute("lng", $row['lng']);
$newnode->addAttribute("type", $row['type']);
}   

echo $xml ->asXML();

以下是Firefox和Chrome中的结果以及我使用的测试数据:

测试数据: enter image description here 铬: enter image description here 火狐: enter image description here