您的位置:首页 > 编程语言 > PHP开发

PHP实现生成XML数据和解析XML格式数据

2014-11-27 15:34 711 查看
本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。
1、生成XML格式数据
MySQL中现有一张用户表,信息如下:



 要获取出来生成XML格式文件发送给客户端
方法如下:
//产生XML的方法
function createXML()
{
$db = mysql_connect("localhost", "root");
mysql_select_db("phpdb",$db);
$sql = "select * from user";
$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
//将查询到的用户数据保存到$userInfo数组中
while ($row = mysql_fetch_array($result))
{
$userInfo[] = array
(
'name' => $row['name'],
'password' => $row['password'],
'sex' => $row['sex'],
'age' => $row['age'],
'mailbox' => $row['mailbox']
);
}
$doc = new DOMDocument('1.0', 'utf-8');  // 声明版本和编码
$doc->formatOutput = true;
$root = $doc->createElement("root");
$doc->appendChild($root);
foreach ($userInfo as $data)
{
$element = $doc->createElement("user");
$name = $doc->createElement("name");
$name->appendChild($doc->createTextNode($data['name']));
$element->appendChild($name);
$password = $doc->createElement("password");
$password->appendChild($doc->createTextNode($data['password']));
$element->appendChild($password);
$sex = $doc->createElement("sex");
$sex->appendChild($doc->createTextNode($data['sex']));
$element->appendChild($sex);
$age = $doc->createElement("age");
$age->appendChild($doc->createTextNode($data['age']));
$element->appendChild($age);
$mailbox = $doc->createElement("mailbox");
$mailbox->appendChild($doc->createTextNode($data['mailbox']));
$element->appendChild($mailbox);
$root->appendChild($element);
}
echo $doc->saveXML();
}


调用这个方法后在页面上可以看到所有数据,查看源代码会显示如下内容:


 
1、解析XML格式数据并写入数据库中
现在把刚才生产的XML数据解析出来写到一个新的表中
方法如下;
//读取XML文件的方法
function readXML($url)
{
header("Content-type:text/html; Charset=utf-8");
$reader = new XMLReader(); //实例化XMLReader
$reader->open($url); //获取xml
$i=1;
while ($reader->read())
{
if ($reader->nodeType == XMLReader::TEXT)
{ //判断node类型
$m = $i%5;
switch ($m)
{
case 1:
$name = $reader->value;
break;
case 2:
$password = $reader->value;
break;
case 3:
$sex = $reader->value;
break;
case 4:
$age = $reader->value;
break;
case 0:
$mailbox = $reader->value;
$db = mysql_connect("localhost", "root");
mysql_select_db("phpdb",$db);
//将读到的数据写入数据库的表中
mysql_query("insert into test values('$name','$password',$sex,$age,'$mailbox');");
//将读到的一个完整对象的元素写入数组中
// $userInfo[] = array
// (
// 'name' => $name,
// 'password' => $password,
// 'sex' => $sex,
// 'age' => $age,
// 'mailbox' => $mailbox
// );
break;
}
$i++;
}
}
}
}

调用这个方法将把数据写入到test表中,效果图如下;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: