2014-08-30 59 views
0

我正在使用XMLWriter嘗試導出當前包含約6700行的數據庫。PHP - 使用XMLWriter將數據庫導出爲XML時缺少標記

從我所看到的,這樣做應該是相對直接的,但在打印XML的過程中,它不會關閉元素,因此會產生錯誤。

$xml = new XMLWriter(); 

$xml->openURI("php://output"); 
$xml->startDocument('1.0', 'UTF-8'); 
$xml->setIndent(true); 

$xml->startElement('doc'); 

while ($row = mysql_fetch_assoc($getResult)) { 
    $xml->startElement("item"); 

    $xml->startElement("id"); 
    $xml->writeRaw($row['id']); 
    $xml->endElement(); 

    $xml->startElement("type"); 
    $xml->writeRaw($row['type']); 
    $xml->endElement(); 

    $xml->startElement("name"); 
    $xml->writeRaw($row['name']); 
    $xml->endElement(); 

    $xml->endElement(); 
} 

$xml->endElement(); 

$xml->flush(); 

在過程中的某個時刻,我會看到像這樣的XML輸出:

<type>exampleTypetype> 

它將然後繼續打印XML。

我對PHP還是比較陌生的,所以我很感謝任何關於這裏可能發生的事情。

感謝

回答

1

您使用XMLWriter::writeRaw(),當你做到這一點,你需要照顧的正確XML編碼你自己,因爲這寫的,是字節。

而且正如您的錯誤描述所顯示的那樣,您不會恰好先將這些原始字節編碼爲有效的XML。

正如它進一步顯示,你不知道這一點。很可能是因爲您期望XMLWriter擴展已經爲您編碼數據。

然後,您可能正在尋找XMLWriter::text()或者如果您需要將二進制數據編碼到XML中,請參閱base64_encode()

相關問題