重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
以前做过联通或电信的service订购接口,收到的内容就是XML的,需要用到PHP的XML处理功能,你的代码可以这样:
创新互联公司为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到成都做网站、网站建设、外贸营销网站建设, 我们的网页设计师为您提供的解决方案。
xmp
?php
$string=file_get_contents("");
if($string!=""):
$xml = new DomDocument('1.0');
$xml-loadXML($string);
//班台
$BanTai=array(
'Title'=$xml-getElementsByTagName('channel')-item(0)-childNodes-item(1)-nodeValue,
'Link' =$xml-getElementsByTagName('channel')-item(0)-childNodes-item(3)-nodeValue
);
for($i=0;$i3;$i++)
{
$Title[]=array(
'Title'=$xml-getElementsByTagName('item')-item($i)-childNodes-item(1)-nodeValue,
'Link' =$xml-getElementsByTagName('item')-item($i)-childNodes-item(3)-nodeValue
);
}
print_r($BanTai);
print_r($Title);
endif;
?
/xmp
回答补充:
现在你直接copy,然后执行没效果吗?
我这里是可以的呢,测试网址是:service.020i.net/test_xml.php
1、首先我们做一个简单的xml文件
?xml version="1.0 encoding="UTF-8"?humanszhangyingname张映/namesex男/sexold28/old/zhangyingtanknametank/namesex男/sexold28/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++; } } ?
编码问题,function
characterData改成如下
function
characterData($parser_instance,
$xml_data)
{
global
$name,$position;
$xml_data=iconv("utf-8","gb2312",$xml_data);//转换成gb2312
if($position)
echo
$xml_data."br";
if($name)
echo
$xml_data."br";
}
显示的那个页面也要有charset=gb2312
转成数组
?php/*** function:使用字符串方式读XML文件* author:JetWu* date:2016.12.03**/$file = './write_str.xml';$con = file_get_contents($file); //XML标签配置$xmlTag = array( 'starttime', 'endtime', 'school'); $arr = array();foreach($xmlTag as $x) { preg_match_all("/".$x.".*\/".$x."/", $con, $temp); $arr[] = $temp[0];}//去除XML标签并组装数据$data = array();foreach($arr as $key = $value) { foreach($value as $k = $v) { $a = explode($xmlTag[$key].'', $v); $v = substr($a[1], 0, strlen($a[1])-2); $data[$k][$xmlTag[$key]] = $v; }}echo 'pre';print_r($data);
给个小例子:
1.直接是xml字符串
?php
$string = XML
?xml version='1.0'?
document
titleForty What?/title
fromJoe/from
toJane/to
body
I know that's the answer -- but what's the question?
/body
/document
XML;
$xml = simplexml_load_string($string);
print_r($xml);
?
2. xml文件的
?php
if (file_exists('test.xml')) {
$xml = simplexml_load_file('test.xml');
print_r($xml);
} else {
exit('Failed to open test.xml.');
}
?