xml解析php
① php Xml解析中的問題
xml格式組織不對。
<weather_data>下面的元素應該再分一層才可以,現在的格式並不能區分每個日期,可以這樣:
<CityWeatherResponse>
<error>0</error>
<status>success</status>
<date>2015-03-24</date>
<results>
<currentCity>鄭州</currentCity>
<weather_data>
<data>
<date>周二03月24日(實時:14℃)</date>
<weather>小雨</weather>
<wind>微風</wind>
<temperature>10℃</temperature>
</data>
<data>
<date>周三</date>
<weather>陰轉小雨</weather>
<wind>微風</wind>
<temperature>16~9℃</temperature>
</data>
<data>
<date>周四</date>
<weather>陣雨轉多雲</weather>
<wind>微風</wind>
<temperature>15~7℃</temperature>
</data>
<data>
<date>周五</date>
<weather>晴</weather>
<wind>風</wind>
<temperature>10℃</temperature>
</data>
</weather_data>
</results>
</CityWeatherResponse>
遍歷:
foreach($xml->results->weather_data->dataas$exml)
{
echo$exml->date."<br>";
}
② PHP解析xml
.asmx的全程是ASMX Active Server Methods,.asmx 是WEB服務文件,asmx.cs里有相關代碼
屬於B/S形式,用SOAP方式HTTP訪問,用XML返回。
以下是 php語言 利用 soap調用.Net的WebService asmx文件
<?php
//php.ini中打開下面3個dll
//extension = php_soap.dll
//extension = php_curl.dll
//extension = php_openssl.dll
header("content-type:text/html;charset=utf-8");
$client = new SoapClient(" http://192.168.1.178:808/ChkWelePsw.asmx?WSDL");
//本行測試不可行 $client = new SoapClient(" http://192.168.1.178:808/chkwelepsw.asmx?WSDL/ChkWele?username=test3&psw=123");
//參數這樣傳遞 先包裝一下
$param = array('username'=>'test3','psw'=>'123');
//調用必須用__soapCall
$p = $client->__soapCall('ChkWele',array('parameters' => $param));
print_r($p->ChkWeleResult); //這里先輸出一下變數$p,看看是什麼類型。
?>
.NET部分 webservice要注意的地方
/*
* <system.web>在這個節點中加入如下內容
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
*/
[WebMethod(Description = "This......", EnableSession = false)]
public string ChkWele(string username, string psw)
{
string ret = "";
return ret;
}
③ 關於php解析xml問題
php 有專門的函數 處理 xml 你看看 simplexml_load_string() 了解這個函數相關的知識點
④ 幾種php解析xml方式
最簡單的實用的:SimpleXML是PHP5後提供的一套簡單易用的xml工具集,可以把xml轉換成方便處理的對象,也可以組織生成xml數據。不過它不適用於包含namespace的xml,而且要保證xml格式完整(well-formed)。它提供了三個方法:simplexml_import_dom、simplexml_load_file、simplexml_load_string,函數名很直觀地說明了函數的作用。三個函數都返回SimpleXMLElement對象,數據的讀取/添加都是通過SimpleXMLElement操作
參數使用,可以參考手冊
⑤ php 如何解析xml格式字元串
//假設xml字元串
$postStr = '<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[p1]]></Content></xml>';
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
var_mp($postObj);
/**
object(SimpleXMLElement)[16] public 'ToUserName' => string 'toUser' (length=6) public 'FromUserName' => string 'FromUser' (length=8) public 'CreateTime' => string '123456789' (length=9) public 'MsgType' => string 'text' (length=4) public 'Content' => string 'p1' (length=2)
*/
//把xml字元串解析為對象
⑥ php讀取XML文件,並解析成數組
simplexml_load_string可以把xml解析成對象,然後可以用var_mp進行解析。
php內部庫並沒有包含直接把xml解析成數組的模塊。
而且xml本來包含節點概念,解析成對象以後可以直接訪問每一個節點,而數組相對就要難以理解的多。
因此解析成數組並不比解析成對象有多少優勢。
如果你對數組實在有需求的話,可以自己寫一個庫,並不會太難。
⑦ 請問下面這個XML文檔用PHP該如何解析
寫了個例子,你參照一下:
<?php
$doc = new DOMDocument;
$doc->load('test.xml');
$items = $doc->getElementsByTagName('Flight');
foreach ( $items as $item ) {
echo $item->getAttribute('FlightNo')."\n";
echo $item->getAttribute('AirCompanyCode')."\n";
echo $item->getAttribute('AirCompanyName')."\n";
}
?>
⑧ php 解析xml 的方法
$url =「給你介面的路徑";
$doms = simplexml_load_file ( $url );//直接把路徑放在simplexml_load_file 方法里就行$doms里存放的就是讀取的 XML 信息,你可以print_r($doms)試一下
然後用循環你就可以獲得 XML裡面的信息了
foreach ( $doms->節點名字 as $studys )
{
echo $studys."</br>";//輸入一下結果可以看一下
}
注意:simplexml_load_file ( $url )這個方法解析出來的中文只能是utf-8 如果你的項目使用的不是該編碼會出現中文亂碼,你可以用
iconv ( "UTF-8", "GB2312", 「這里放你要轉換的內容」);轉換能你用的編碼格式例如轉換成GB2312
⑨ php 解析xml
親手打的,經過測試的,採納吧
<?php
header("Content-type: text/html; charset=utf-8");
$xml = '<?xml version="1.0" encoding="utf-8"?><rss version="5.0"><list page="1" pagecount="1" pagesize="20" recordcount="1"><video><last>2014-7-11 12:08:07</last><id>19393</id><tid>7</tid><name><![CDATA[越軌追擊]]></name><type>愛情</type><pic>http://img.jijizy.com/upload/vod/2014-07-11/20147111274361461.jpg</pic><lang>英語</lang><area>歐美</area><year>2005</year><state>0</state><note><![CDATA[HD]]></note><actor><![CDATA[克里夫·歐文 詹妮弗·安妮斯頓]]></actor><director><![CDATA[米凱爾·哈弗斯特羅姆]]></director><dl><dd flag="jjvod"><![CDATA[HD$jjhd://20000||越軌追擊HD中字1280高清.rmvb$jjvod]]></dd></dl><des><![CDATA[他又無法求助於警察,他現在必須找到露辛達,依靠兩個人的力量奪回曾經寧靜的生活。]]></des></video></list></rss>';
$result = simplexml_load_string($xml);
//var_mp($result); //可以列印看看結果如何
$result = object_to_array($result);
//print_r($result['list']['video']);exit;
foreach($result['list']['video'] as $key=>$v){
echo $key."=".$v."\n";
}
function object_to_array($obj){
$arr = array();
$_arr = is_object($obj)? get_object_vars($obj) :$obj;
foreach ($_arr as $key => $val){
$val=(is_array($val)) || is_object($val) ? object_to_array($val) :$val;
$arr[$key] = $val;
}
return $arr;
}
?>
⑩ php 如何解析帶屬性的xml
<?php
//讀取xml
$dom=new DOMDocument('1.0');
$dom->load('data.xml');
$em=$dom->getElementsByTagName('videos');//最外層節點
$em=$em->item(0);
$items=$em->getElementsByTagName('video');//節點
//如果不用讀取直接添加的話把下面這一段去掉即可
foreach($items as $a){
foreach($a->attributes as $b){//$b->nodeValue;節點屬性的值$b->nodeName;節點屬性的名稱
echo $b->nodeName;
echo ":";
echo $b->nodeValue;
echo "<br/>";
}
}