如何通过PHP生成和获取XML格式数据

 我来答
飞蓬201314
2017-05-29 · TA获得超过231个赞
知道答主
回答量:160
采纳率:0%
帮助的人:44.7万
展开全部

1自己拼,XML编码

<?php
header('Content-type:text/xml');
echo "<?xml version='1.0' encoding='utf-8'>";
echo "<book>";
echo "<PHP>";
echo "<name>PHP程序开发范例宝典</name>";
echo "<price 单位='元/本'>89.00</price>";
echo "<date>2007-09-01</date>";
echo "</PHP>";
echo "</book>";
?>

拼接的效果


2从数据库中查询再拼XML编码

<?php
$dsn="mysql:host=localhost;dbname=test";
try {
$pdo = new PDO($dsn,'root','passwowd'); //初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="select * from book";   //定义SQL语句
$pdo->query('set names utf8');
$result=$pdo->prepare($query); //准备查询语句
$result->execute();       //执行查询语句,并返回结果集
$arr='';
while($res=$result->fetch()){
$arr.='<PHP><id>'.$res[0].'</id><name>'.$res[1].'</name><date>'.$res[2].'</date>'.'<price>'.$res[3].'</price></PHP>';
}
echo "<?xml version='1.0' encoding='utf-8'?><book>".$arr.'</book>';
} catch (PDOException $e) {
die ("Error!: ".$e->getMessage()."<br>");
}
?>

拼接的效果

3使用ajax获取,DOM解析

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>xml</title>
</head>
<body>
<script>
function check(){
var xhr=new XMLHttpRequest();
xhr.open('GET','xml.php');
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200){
console.log(xhr.responseText);
//初始化 DOM解析对象
var domParser = new DOMParser();
//字符串解码为对象
var xmlDoc = domParser.parseFromString(xhr.responseText,'text/xml');
//按标签名获取元素 返回数组
var elements = xmlDoc.getElementsByTagName('PHP');
//拼接html格式字符串
var str ='<tr><th>id</th><th>name</th><th>date</th><th>price</th></tr>';
for (var i=0;i<elements.length;i++){
var id=elements[i].getElementsByTagName('id')[0].firstChild.nodeValue;
var name=elements[i].getElementsByTagName('name')[0].firstChild.nodeValue;
var date=elements[i].getElementsByTagName('date')[0].firstChild.nodeValue;
var price=elements[i].getElementsByTagName('price')[0].firstChild.nodeValue;
str+= '<tr><td>'+id+'</td><td>'+name+'</td><td>'+date+'</td><td>'+price+'</td></tr>';
}
document.getElementById('table2').innerHTML=str;
}
};
xhr.send(null);
}
</script>
<button onclick="check();">点我</button>
<table id="table2" border="2" cellspacing="0">
</table>
</body>
</html>

效果

1

2

补充:

使用JSON

1数据库查询,自己拼 JSON 编码

<?php
$dsn="mysql:host=localhost;dbname=test";
try {
$pdo = new PDO($dsn,'root','password'); //初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="select * from book";   //定义SQL语句
$pdo->query('set names utf8');
$result=$pdo->prepare($query); //准备查询语句
$result->execute();       //执行查询语句,并返回结果集
$a=$arr='';
while($res=$result->fetch()){
$arr.='{"id":'.'"'.$res[0].'",'.'"name":'.'"'.$res[1].'",'.'"time":'.'"'.$res[2].'",'.'"jia":'.'"'.$res[3].'",'.'"zhe":'.'"'.$res[4].'",'.'"chu":'.'"'.$res[5].'"},';
}
echo $a="[".substr($arr,0,strlen($arr)-1)."]";
} catch (PDOException $e) {
die ("Error!: ".$e->getMessage()."<br>");
}
?>

2数据库查询,函数 JSON 编码

<?php
$dsn="mysql:host=localhost;dbname=test";
try {
$pdo = new PDO($dsn,'root','password'); //初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="select * from book";   //定义SQL语句
$pdo->query('set names utf8');
$result=$pdo->prepare($query); //准备查询语句
$result->execute();       //执行查询语句,并返回结果集
$res=$result->fetchAll();
//JSON 编码
echo json_encode($res);
} catch (PDOException $e) {
die ("Error!: ".$e->getMessage()."<br/>");
}
?>

效果

3ajax获取,JSON解析

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON</title>
</head>
<body>
<script>
function check() {
var XHR = new XMLHttpRequest();
XHR.open('GET','JSON.php');
XHR.onreadystatechange = function (){
if(XHR.readyState == 4 && XHR.status ==200){
var books =JSON .parse(XHR.responseText);
var books2='<tr><th>id</th><th>bookname</th><th>time</th><th>price</th><th>marker</th><th>publisher</th></tr>'
for (var i=0;i<books.length;i++){
books2+= '<tr><td>'+(books[i ].id)+'</td><td>'+(books[i ].name)+'</td><td>'+(books[i ].time)+'</td><td>'+(books[i ].jia)+'</td><td>'+(books[i ].zhe)+'</td><td>'+(books[i ].chu)+'</td></tr>';
}
document.getElementById('table2').innerHTML=books2;
}
};
XHR.send(null);
}
</script>
<input type="button" value="点我" onclick="check();">
<table id="table2" border="2" cellspacing="0"></table>
</body>
</html>

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式