从表中提取数据,并将其保存在一个XML文件

问题描述:

我从一个MySQL表获取的一组记录,然后它在XML文件中存储如下:从表中提取数据,并将其保存在一个XML文件

while($rows = mysqli_fetch_array($result)) 
{ 
$deviceNumber=$rows['deviceid']; 
$videoNumber=$rows['videoid']; 
$paymentDate=$rows['paymentdate']; 
$paymentTime=$rows['timenow']; 

$xml = new DOMDocument(); 
$xmlroot = $xml->createElement("xml"); 
$payments = $xml->createElement("payments"); 
$deviceid = $xml->createElement("deviceid", $deviceNumber); 
$payments->appendChild($deviceid); 
$videonumber = $xml->createElement("videonumber"); 
$videoid = $xml->createElement("videoid", $videoNumber); 
$payments->appendChild($videoid); 
$paymentdate = $xml->createElement("paymentdate"); 
$paiddate = $xml->createElement("paiddate", $paymentDate); 
$payments->appendChild($paiddate); 
$paymenttime = $xml->createElement("paymenttime"); 
$timenow = $xml->createElement("timenow", $paymentTime); 
$payments->appendChild($timenow); 
$xmlroot->appendChild($payments); 
$xml->appendChild($xmlroot); 

//Save the XML file 
$xml->save("userPaymentDetails.xml"); 
    } 

上述方法的问题,它只保存一条记录如下:

<xml> 
<payments> 
<deviceid>43CA3KZXYQGBK</deviceid> 
<videoid>1234567</videoid> 
<paiddate>2014-01-09</paiddate> 
<timenow>19:38:19</timenow> 
</payments> 
</xml> 

我想要在XML文件中有多个值。 我想实现:

<xml> 
<payments> 
<deviceid>43CA3KZXYQGBK</deviceid> 
<videoid>1234567</videoid> 
<paiddate>2014-01-09</paiddate> 
<timenow>19:38:19</timenow> 
</payments> 
<payments> 
<deviceid>76QL6DFBAQHJL</deviceid> 
<videoid>1348921</videoid> 
<paiddate>2014-01-10</paiddate> 
<timenow>10:20:12</timenow> 
</payments>  
<payments> 
<deviceid>93CH3GHTYQGPM</deviceid> 
<videoid>890345</videoid> 
<paiddate>2014-01-15</paiddate> 
<timenow>14:32:40</timenow> 
</payments> 
</xml> 

我在做什么错了?

您可以在while循环中创建XML文件,以便每个周期覆盖现有数据。您应该在循环外部创建xml(XMLDocument和根元素)并将其保存在循环之后。

+0

我同意,做到了,现在运行良好。谢谢。 – mutiemule

您是否试过保留$ xml-> save(“userPaymentDetails.xml”);和$ xml = new DOMDocument();跳出循环。如果是,那么会发生什么。

+0

我曾试过这个,问题是,它创建了所有的节点,所以我不得不采取'$ xml = new DOMDocument(); $ xmlroot = $ xml-> createElement(“xml”);'在循环前面和'$ xml-> appendChild($ xmlroot); $ xml-> save(“userPaymentDetails.xml”);'在循环之后。谢谢。现在它运作良好。 – mutiemule