导航:首页 > 编程语言 > php解析xml函数

php解析xml函数

发布时间:2023-08-01 05:54:19

‘壹’ php怎么解析微信支付结果返回的xml

PHP解析微信支付结果返回的xml的方法是通过自定义方法和第三方组件DomDocument实现的。
1、解析代码如下:
<?PHP
header("Content-type:text/html; Charset=utf-8");
$url = "http://www.google.com/ig/api?weather=shenzhen";

// 加载XML内容
$content = file_get_contents($url);
$content = get_utf8_string($content);
$dom = DOMDocument::loadXML($content);
/*
此处也可使用如下所示的代码,
$dom = new DOMDocument();
$dom->load($url);
*/

$elements = $dom->getElementsByTagName("current_conditions");
$element = $elements->item(0);
$condition = get_google_xml_data($element, "condition");
$temp_c = get_google_xml_data($element, "temp_c");
echo '天气:', $condition, '<br />';
echo '温度:', $temp_c, '<br />';

function get_utf8_string($content) { // 将一些字符转化成utf8格式
$encoding = mb_detect_encoding($content, array('ASCII','UTF-8','GB2312','GBK','BIG5'));
return mb_convert_encoding($content, 'utf-8', $encoding);
}

function get_google_xml_data($element, $tagname) {
$tags = $element->getElementsByTagName($tagname); // 取得所有的$tagname
if ($items->length > 1) {
return $items;
}
$tag = $tags->item(0); // 获取第一个以$tagname命名的标签
if ($tag->hasAttributes()) { // 获取data属性
$attribute = $tag->getAttribute("data");
return $attribute;
}else {
return false;
}
}
?>
2、返回支付的xml报文:
<?xml version="1.0"?>
<xml_api_reply version="1">
<weather mole_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
<forecast_information>
<city data="Shenzhen, Guangdong"/>
<postal_code data="shenzhen"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2009-10-05"/>
<current_date_time data="2009-10-04 05:02:00 +0000"/>
<unit_system data="US"/>
</forecast_information>
<current_conditions>
<condition data="Sunny"/>
<temp_f data="88"/>
<temp_c data="31"/>
<humidity data="Humidity: 49%"/>
<icon data="/ig/images/weather/sunny.gif"/>
<wind_condition data="Wind: mph"/>
</current_conditions>
</weather>
</xml_api_reply>
3、打印解析结果:

print $html;

‘贰’ PHP中用simpleXML解析XML文档,为什么总出错

你说的“而且单个测试都没问题”只是抽样测试脊差野,并不是测试全部。应该有至少一个XML格式是不正确的。如果你加庆握了我的代码,应该会输出这个不正确的XML的内容。你把这个内容贴出来给你看看,没有什么机密吧?如果可以的话,加网络HI。账号:everalan

你加我的代码后,有执行到die($xml)这一行吗?有的话把输出的XML内容发过来帮你分析一下

应该是XML本身的格式就不正确,自然解析失败樱喊
try{
$xmld = new SimpleXMLElement($xml);
}catch(Exception $e){
die($xml);
}

这样出错的时候就能知道那个XML是什么内容就知道哪里错了

‘叁’ php解析xml字符串

编写示例代码如下,经运行测试通过:

<?php
$xmlStr = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<ExportData>
<Body>
<Content>
<Id>1</Id>
<Name>Test01</Name>
<Point>40</Point>
</Content>
<Content>
<Id>2</Id>
<Name>Test02</Name>
<Point>80</Point>
</Content>
</Body>
</ExportData>
XML;

$xml = new SimpleXMLElement($xmlStr);
foreach($xml->Body->Content as $item){
echo 'ID: '.$item->Id."<br/>\n";
echo 'Name: '.$item->Name."<br/>\n";
echo 'Point: '.$item->Point."<br/><br/>\n";
}
?>

‘肆’ php 读取xml 用哪种方法好

1、首先我们做一个简单的xml文件
<?xml version="1.0 encoding="UTF-8"?><humans><zhangying><name>张映</name><sex>男</sex><old>28</old></zhangying><tank><name>tank</name><sex>男</sex><old>28</old></tank></humans>
2、
php读取xml的几种方法:
1)DOMDocument读取xml
<?php $doc = new DOMDocument(); $doc->load('person.xml'); //读取xml文件 $humans = $doc->getElementsByTagName( "humans" ); //取得humans标签的对象数组 foreach( $humans as $human ) { $names = $human->getElementsByTagName( "name" ); //取得name的标签的对象数组 $name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name> $sexs = $human->getElementsByTagName( "sex" ); $sex = $sexs->item(0)->nodeValue; $olds = $human->getElementsByTagName( "old" ); $old = $olds->item(0)->nodeValue; echo "$name - $sex - $old\n"; } ?>
2)simplexml读取xml
<?php $xml_array=simplexml_load_file('person.xml'); //将XML中的数据,读取到数组对象中 foreach($xml_array as $tmp){ echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>"; } ?>
3)用php正则表达式来记取数据
<?php $xml = ""; $f = fopen('person.xml', 'r'); while( $data = fread( $f, 4096 ) ) { $xml .= $data; } fclose( $f ); // 上面读取数据 preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s", $xml, $humans ); //匹配最外层标签里面的内容 foreach( $humans[1] as $k=>$human ) { preg_match_all( "/\<name\>(.*?)\<\/name\>/", $human, $name ); //匹配出名字 preg_match_all( "/\<sex\>(.*?)\<\/sex\>/", $human, $sex ); //匹配出性别 preg_match_all( "/\<old\>(.*?)\<\/old\>/", $human, $old ); //匹配出年龄 } foreach($name[1] as $key=>$val){ echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ; } ?>
4)xmlreader来读取xml数据
<?php $reader = new XMLReader(); $reader->open('person.xml'); //读取xml数据 $i=1; while ($reader->read()) { //是否读取 if ($reader->nodeType == XMLReader::TEXT) { //判断node类型 if($i%3){ echo $reader->value; //取得node的值 }else{ echo $reader->value."<br>" ; } $i++; } } ?>

‘伍’ PHP怎么解析微信支付结果返回的xml

php解析xml报文的方法是DOMDocument:
解析方法如下:

$xmlstring = <<<XML
<?xml version='1.0'?>
<document>
<cmd attr='default'>login</cmd>
<login>imdonkey</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报文

在该示例中,simplexml_load_file 函数用于加载 XML 文件并将其作为 SimpleXMLElement 对象返回。然后,我们可以使用 children() 方法访问根节点的所有子节点,并使用 getName() 方法获取每个子节点的名称兄蠢。接下来,我们可以继续使用银肆 children() 方法访问每个子节点的所有子节点,以此类推,直到达到所需的级羡搏陪别。

阅读全文

与php解析xml函数相关的资料

热点内容
常微分第三版答案pdf 浏览:262
安卓机qq怎么开悬浮窗 浏览:61
备孕三年了怎么缓解压力大 浏览:741
登录阿里云服务器黑屏 浏览:334
匿名元组Python 浏览:723
华为运动健康存储的文件夹 浏览:520
cad正多边形命令 浏览:461
压缩比150能加97油吗 浏览:397
linux新建群在哪个文件夹 浏览:794
韵达快运app在哪里签收 浏览:336
阿里云服务器如何绑定备案域名 浏览:273
单片机用什么键盘好 浏览:25
android动画面试 浏览:309
pdf无法删除 浏览:90
ftp删除文件java 浏览:89
裂变棋牌源码 浏览:87
邀月命令江别鹤退婚 浏览:656
春秋app在哪里查询 浏览:136
用linux设计 浏览:747
安卓intent什么意思 浏览:946