PHP读取MySQL生成XML格式数据

        假设有如下一张植物信息表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>

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值