我尝试将数据从数据库导出到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浏览器中无效...
答案 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中的结果以及我使用的测试数据: