本文目录一览:
- 1、PHP怎么解析微信支付结果返回的xml
- 2、PHP显示XML的问题
- 3、php输出xml内容
- 4、怎样通过php程序返回xml格式的数据
- 5、php 怎样查看返回的xml数据
- 6、php webservice 返回 xml 格式保存及调用
PHP怎么解析微信支付结果返回的xml
php解析xml报文的方法是DOMDocument:
解析方法如下:
$xmlstring = XML
?xml version='1.0'?
document
cmd attr='default'login/cmd
loginimdonkey/login
/document
XML;
$dom = new DOMDocument();
$dom-loadXML($xmlstring);
print_r(getArray($dom-documentElement));
function getArray($node) {
$array = false;
if ($node-hasAttributes()) {
foreach ($node-attributes as $attr) {
$array[$attr-nodeName] = $attr-nodeValue;
}
}
if ($node-hasChildNodes()) {
if ($node-childNodes-length == 1) {
$array[$node-firstChild-nodeName] = getArray($node-firstChild);
} else {
foreach ($node-childNodes as $childNode) {
if ($childNode-nodeType != XML_TEXT_NODE) {
$array[$childNode-nodeName][] = getArray($childNode);
}
}
}
} else {
return $node-nodeValue;
}
return $array;
}
PHP显示XML的问题
$xmlDoc = new DOMDocument ();
$xmlDoc-load ( 'xml.xml' );
$utdm = $xmlDoc-getElementsByTagName ( 'post' ); //获取
foreach ( $utdm as $is ) { //判断id=?
$id = $is-getAttribute ( 'id' );
if ($id == "new0") {
$nodeList = $is-getElementsByTagName('title');
echo "ok" . "br";
foreach ( $nodeList as $n ) {
echo "id: " . $id . "br";
echo "name: " . $n-nodeValue . "brbr";
}
break; //如果判断成功了就停止了.不用再判断了
} else {
echo "no" . "br";
}
}
你的nodelist是整个文档中的名字是title的节点的集合,而实际上你需要的nodeList是id = new0 的节点的中的名字是title的节点的集合,上面的代码可以实现
php输出xml内容
PHP生成XML的方法很多,这里演示最基本,最简单的字符串构造法。就是使用字符串构造或者拼接成xml数据格式,然后输出或者生成xml文件。
?php
$data = array(
array(
'title' = 'baidu',
'country' = 'china',
'name' = '百度',
),
array(
'title' = 'google',
'country' = 'usa',
'name' = '谷歌',
)
);
//构造xml数据格式
$xml = "?xml version=\"1.0\" encoding=\"utf-8\"?\n";
$xml .= "data\n";
foreach ($data as $itm) {
//循环构造xml单项
$item = "item\n";
$item .= "title" . $itm['title'] . "/title\n";
$item .= "country" . $itm['country'] . "/country\n";
$item .= " name" . $itm['name'] . "/name\n";
$item .= "/item\n";
$xml .=$item;
}
$xml .= "/data\n";
//输出xml数据
echo $xml;
?
生成的数据格式如下:
怎样通过php程序返回xml格式的数据
无论是返回 json 还是 xml 数据,区别仅在于数据的格式。
返回 xml 格式数据示例如下:
?php
//指示返回数据格式为 xml
header('Content-Type: text/xml');
?
?xml version="1.0" encoding="utf-8" ?
?php
//构造 xml
//$xmldata = "
// data
// site_name$site[name]/site_name
// ........
// data";
echo $xmldata;
?
php 怎样查看返回的xml数据
php返回xml,首先封装好xml数据格式,然后return即可。示例如下:
?php
//name
$name="zhidao";
//age
$age=10;
//构造xml数据格式
$xml = XML
?xml version="1.0" encoding="utf-8"?
baidu
name {$name} /name
age{$age}/age
/baidu
XML;
return $xml;
?
php webservice 返回 xml 格式保存及调用
写个xml生成类
将数组传进去
生成xml文件就可以
送你个 改改
?php
class xml {
private $data;
private $encoding='utf-8'; //XML文件编码
private $root='yeedao';
/*---------------------------------------
* 实例化时传递参数
* $data array 执行编译的数据
*---------------------------------------*/
public function __construct($data=''){
$this-data=$data;
if( $this-data=='' ){
exit('请传递参数');
}
}
public function __toString(){
return $this-get_xml();
}
/*----------------------------------------
* 生成XML
*----------------------------------------*/
public function get_xml() {
$xml = "?xml version=\"1.0\" encoding=\"{$this-encoding}\"?";
$xml.= "{$this-root}";
$xml.= $this-make_xmk($this-data);
$xml.= "/{$this-root}";
return $xml;
}
/*-------------------------------------
* 将数组或对象转换成XML-DOM格式
*-------------------------------------*/
protected function make_xmk($data) {
$xml = '';
foreach ($data as $key = $value) {
//如果$key是一个数字,前面加item
(is_numeric($key)) ? $key='item'.$key : $key ;
$xml.="{$key}";
//如果遍历的$value还是一个array,回调
$xml.= ( is_array($value) || is_object($value)) ? $this-make_xmk($value) : $value;
$xml.="/{$key}";
}
return $xml;
}
/*-----------------------------------------
* 创建XML文件,成功后返回文件路径
* $path 文件路径
* $filename 文件名
*-----------------------------------------*/
public function touch_xml($path='',$filename=''){
$path=$_SERVER['DOCUMENT_ROOT'].$path;
if($path{strlen($path)-1} != '/')$path.='/';
if(!is_dir($path))return '不是一个目录';
$filename=$path.$filename;
touch ($filename);
chmod($filename,0777);
if(is_writeable($filename)){
if($handle=fopen($filename,'w+')){
if(fwrite($handle,$this-get_xml()) === false){
return '文件'.$filename.'写入失败';
}else{
return $filename; //返回路径
}
}else{
return '不能打开文件'.$filename;
}
}else{
return '文件'.$filename.'不可写';
}
}
}
?