0

我尝试了一些已经在此处发布的解决方案,但似乎没有任何效果。那可能是因为我对 php 或 xml 真的不是很熟悉。我只需要为 xcoding 输出 xml。所以希望有人可以阐明我如何可以反转我的 xml 的顺序,以便最后一个条目位于顶部。我最后一次尝试什么:

$query = array_reverse($doc->xpath('query'));

但它不喜欢它,例如它不起作用。

所以这是我的代码,以创建我的 xml 文档:

<?php 

if(!$dbconnect = mysql_connect('localhost', '-', '-')) {
echo "Connection failed to the host 'localhost'.";
exit;
} // if
if (!mysql_select_db('-')) {
echo "Cannot connect to database '-'";
exit;
} // if

$table_id = 'table1';
$query = "SELECT Name,Age,Sex FROM $table_id";

$dbresult = mysql_query($query, $dbconnect);

// create a new XML document
$doc = new DomDocument('1.0');

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

// process one row at a time
while($row = mysql_fetch_assoc($dbresult)) {

// add node for each row
$occ = $doc->createElement($table_id);
$occ = $root->appendChild($occ);

// add a child node for each field
foreach ($row as $fieldname => $fieldvalue) {

$child = $doc->createElement($fieldname);
$child = $occ->appendChild($child);

$value = $doc->createTextNode($fieldvalue);
$value = $child->appendChild($value);

} // foreach
} // while


// get completed xml document
$xml_string = $doc->saveXML();
$doc->save("yolo.xml") 

//echo $xml_string;
?> 
4

1 回答 1

1

最好的办法是发出一个 SQL 查询,它按您想要的顺序返回结果。您在此处的 SQL 查询没有ORDER BY子句,因此返回的结果没有特定的顺序。

但是,您也可以在将结果添加到 XML 文档时颠倒它们的顺序:不要为每一行附加新的子节点,而是将它们添加到前面。替换这一行:

$occ = $root->appendChild($occ);

$occ = $root->insertBefore($occ, $root->firstChild);

同样一般来说,最好在将 XML 树添加到文档之前完成构建它。

于 2012-05-13T12:50:10.963 回答