假设有如下一张植物信息表plant需要提供给第三方调用。
生成xml的PHP代码如下:
<?php
error_reporting(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE);
$host = "localhost"; // 定义连接到的mysql服务器名
$user = "root"; // 定义用于连接的用户名
$pwd = "12345678"; // 定义用于连接的密码
$dbname = "leaf"; // 数据库名称,顶层元素
$dbtable = "plant"; // 数据表,要取得的节点
// 打开数据库连接
$connect = mysql_connect($host, $user, $pwd) or die("Couldn't connect Mysql server!");
@ MySQL_select_db($dbname, $connect);
@ MySQL_query("SET NAMES 'UTF-8'");
$query = "select * from " . $dbtable;
$result = @ MYSQL_QUERY($query) or die("Invalid query: " . mysql_error());
$fieldNum = mysql_num_fields($result); // 字段数
$resultNum = count($result); // 记录数
$dbtField = array (); // 数据表字段数组
// 获取表的各个字段名
for ($i = 0; $i < $fieldNum; $i++) {
$dbtField[$i] = mysql_field_name($result, $i);
}
// 获取记录数组
$resArray = array ();
$index = 0;
while ($row = mysql_fetch_array($result)) {
$resArray[$index] = $row;
$index++;
}
//echo "<pre>";
//print_r($resArray);
//echo "</pre>";
// 建立xml, 声明版本和编码
$dom = new DOMDocument("1.0", "utf-8");
// display document in browser as plain text
// for readability purposes
header("Content-Type: text/xml");
// 格式化输出
$dom->formatOutput = true;
// 建立根节点root
$root = $dom->createElement($dbname); //database name
$dom->appendChild($root);
foreach ($resArray as $res) {
// 建立root节点下子节点record
$record = $dom->createElement($dbtable);
$root->appendChild($record);
// 建立record节点下的各项
for ($i = 0; $i < $fieldNum; $i++) {
// 表字段
$node[$i] = $dom->createElement($dbtField[$i]);
// 表字段的值
$node[$i]->appendChild($dom->createTextNode($res[$dbtField[$i]]));
$record->appendChild($node[$i]);
}
}
echo $dom->saveXML();
$dom->save("leaves.xml");
mysql_close();
?>
生成的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<leaf>
<plant>
<Id>1</Id>
<CommonName>Pubescent bamboo</CommonName>
<ScientificName>Phyllostachys edulis (Carr.) Houz.</ScientificName>
<CnName>毛竹</CnName>
<Count>1</Count>
</plant>
<plant>
<Id>2</Id>
<CommonName>Chinese horse chestnut</CommonName>
<ScientificName>Aesculus chinensis</ScientificName>
<CnName>七叶树</CnName>
<Count>3</Count>
</plant>
<plant>
<Id>3</Id>
<CommonName>True indigo</CommonName>
<ScientificName>Indigofera tinctoria L.</ScientificName>
<CnName>木蓝</CnName>
<Count>5</Count>
</plant>
<plant>
<Id>4</Id>
<CommonName>Japanese maple</CommonName>
<ScientificName>Acer Dalmatum</ScientificName>
<CnName>鸡爪枫</CnName>
<Count>7</Count>
</plant>
</leaf>