假設資料表 student (id, name, sex, age),使用 DOMDocument 建立 XML:
include_once('connect.php');
$sql = 'SELECT * FROM student';
$result = mysql_query($sql) or die('Invalid query: ' . mysql_error());
while ($row = mysql_fetch_array($result)) {
$arr[] = ['name' => $row['name'], 'sex' => $row['sex'], 'age' => $row['age']];
}
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$root = $doc->createElement('root');
$doc->appendChild($root);
foreach ($arr as $dat) {
$data = $doc->createElement('data');
$name = $doc->createElement('name');
$name->appendChild($doc->createTextNode($dat['name']));
$data->appendChild($name);
$sex = $doc->createElement('sex');
$sex->appendChild($doc->createTextNode($dat['sex']));
$data->appendChild($sex);
$age = $doc->createElement('age');
$age->appendChild($doc->createTextNode($dat['age']));
$data->appendChild($age);
$root->appendChild($data);
}
echo $doc->saveXML();
輸出範例:
李王皓 男 21 ...
使用 XMLReader 循序讀取,記憶體效率高,適合大型 XML:
header('Content-type:text/html; Charset=utf-8');
$url = 'https://www.helloweba.com/demo/importXML/createXML.php';
$reader = new XMLReader();
$reader->open($url);
$i = 1;
while ($reader->read()) {
if ($reader->nodeType == XMLReader::TEXT) {
$m = $i % 3;
if ($m == 1) $name = $reader->value;
elseif ($m == 2) $sex = $reader->value;
elseif ($m == 0) {
$age = $reader->value;
$arr[] = ['name' => $name, 'sex' => $sex, 'age' => $age];
}
$i++;
}
}
// print_r($arr);
利用模 3 判斷對應欄位,因 XML 結構固定為 name、sex、age 三子節點。
更多 PHP XML 處理技巧請參考本站專題:《PHP針對XML文件操作技巧總結》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》。