从SQL查询创建XML文件

时间:2017-04-16 07:52:41

标签: php mysql sql xml dom

我想用SQL Query创建一个XML文件。但我的问题是,它每次都失败了...这是我的代码:

$stln = $database->query('SELECT name FROM `wp_all_import_xml` GROUP BY name');

$dom = new DOMDocument('1.0', 'utf-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

while($row = $stln->fetch_row()){
    $product = $dom->createElement('product');
    $title = $dom->createElement('title');
    $title->nodeValue = $row["name"][0];
    $product->appendChild($title);
    $dom->appendChild($product);
}

$dom->save('httpdocs/cronjob/data/cronjob.xml');

cronjob.xml文件最后应该如下所示:

<product>
    <title>iPhone 7</title>
</product>
<product>
    <title>iPhone 6</title>
</product>
<product>
    <title>iPhone 5</title>
</product>

但每次我最终都得到一个空的XML文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>

我的浏览器通过调用cronjob.xml文件告诉我这个:

此页面包含以下错误:

第1行第5行的

错误:文档末尾的额外内容 下面是第一个错误的页面呈现。

有人知道我的错误在哪里以及如何修复它?

更新 正确创建XML文件。我看到了标题。但还有另一个问题......也就是说,我得到的错误是这样的:

PHP Warning:  main(): unterminated entity reference            Evil in /Users/spacer/Desktop/spacer/Test/spiel.php on line 21
PHP Warning:  main(): unterminated entity reference   Scenario Pack in /Users/spacer/Desktop/spacer/Test/spiel.php on line 21
PHP Warning:  main(): unterminated entity reference  Conquer The Ultimate Collection in /Users/spacer/Desktop/spacer/Test/spiel.php on line 21
PHP Warning:  main(): unterminated entity reference         Mystics in /Users/spacer/Desktop/spacer/Test/spiel.php on line 21

例如。发生这种情况的名称是这样的名称:Csx Nre 3Gs 21B Genset & New Haven Fl9 Twin Pack。但我不知道,为什么他不能处理这个名字..

有什么想法吗?

问候,谢谢!

1 个答案:

答案 0 :(得分:0)

正如Mateusz Sip所说,你不能拥有多个根元素,尝试类似的东西:

<?xml version="1.0" encoding="utf-8"?>
<products>
   <product>
       <title>iPhone 7</title>
   </product>
   <product>
       <title>iPhone 6</title>
   </product>
   <product>
       <title>iPhone 5</title>
   </product>
</products>