我正在从MySQL数据库中提取一些记录。没问题,我有48,000条记录可以使用。我正在获取所有数据。我一直看着这个,直到我的眼睛一直在游泳。当我尝试将行转换为XML时,结构化应该是:
<listings>
<listing (some attributes)></listing>
<listing (some attributes)></listing>
<listing (some attributes)></listing>
</listings>
相反,XML的结构如下:
<listings>
<listing (some attributes>
<listing (some attributes>
<listing (some attributes>
</listing>
</listing>
</listing>
</listings>
这是创建xml的声明和循环:
$dom = new DOMDocument('1.0','utf-8');
$node = $dom->createElement("listings");
$parnode = $dom->appendChild($node);
while ($row = @mysql_fetch_assoc($result)){
// Add to XML document node
$node = $dom->createElement("listing");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("id",$row['id']);
$newnode->setAttribute("title",$row['title']);
$newnode->setAttribute("latitude",$row['latitude']);
$newnode->setAttribute("longitude",$row['longitude']);
}
答案 0 :(得分:1)
构建完该节点后,您需要添加该节点:
<?php
$arr = [
[
'id' => 1,
'title' => 'title 1',
'latitude' => '1.1',
'longitude' => '2.1'
],
[
'id' => 2,
'title' => 'title 2',
'latitude' => '1.2',
'longitude' => '2.2'
],
];
$dom = new DOMDocument('1.0','utf-8');
$parnode = $dom->createElement("listings");
while ($row = array_shift($arr)){
// Add to XML document node
$newnode = $dom->createElement("listing");
$newnode->setAttribute("id",$row['id']);
$newnode->setAttribute("title",$row['title']);
$newnode->setAttribute("latitude",$row['latitude']);
$newnode->setAttribute("longitude",$row['longitude']);
$parnode->appendChild($newnode);
}
$dom->appendChild($parnode);
echo $dom->saveHTML();
输出:
<listings>
<listing id="1" title="title 1" latitude="1.1" longitude="2.1"></listing>
<listing id="2" title="title 2" latitude="1.2" longitude="2.2"></listing>
</listings>
仅供参考,you shouldn't use mysql_*
functions in new code。从v5.5(2013年6月)开始不推荐使用,从v7.0(2015年12月)开始将其删除。看到red box吗?相反,请了解prepared statements,并使用PDO或MySQLi-this article将帮助您确定最适合您的一个。
此外,请勿使用错误抑制运算符(@
),因为它会隐藏错误消息,这些消息可能有助于调试代码。您还应该始终编写代码,以免产生任何PHP错误,包括声明。