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 に答える