親手打的,經(jīng)過測試的,采納吧
創(chuàng)新互聯(lián)建站服務(wù)項目包括政和網(wǎng)站建設(shè)、政和網(wǎng)站制作、政和網(wǎng)頁制作以及政和網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,政和網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到政和省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
?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"videolast2014-7-11 12:08:07/lastid19393/idtid7/tidname![CDATA[越軌追擊]]/nametype愛情/typepic;/piclang英語/langarea歐美/areayear2005/yearstate0/statenote![CDATA[HD]]/noteactor![CDATA[克里夫·歐文 詹妮弗·安妮斯頓]]/actordirector![CDATA[米凱爾·哈弗斯特羅姆]]/directordldd flag="jjvod"![CDATA[HD$jjhd://20000|b3a97575c3df592ec08adb93c54a9c2dcf7dc332|越軌追擊HD中字1280高清.rmvb$jjvod]]/dd/dldes![CDATA[他又無法求助于警察,他現(xiàn)在必須找到露辛達(dá),依靠兩個人的力量奪回曾經(jīng)寧靜的生活。]]/des/video/list/rss';
$result = simplexml_load_string($xml);
//var_dump($result); //可以打印看看結(jié)果如何
$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
$doc=new?DOMDocument();
$doc-load("test.xml");
$latitude=$doc-getElementsByTagName("Latitude")-item(0)-nodeValue;
$longitude=$doc-getElementsByTagName("Longitude")-item(0)-nodeValue;
$precision=$doc-getElementsByTagName("Precision")-item(0)-nodeValue;
echo?"Latitude:".$latitude."br";
echo?"Longitude:".$longitude."br";
echo?"Precision:".$precision."br";
?
xml的格式都是固定的,就是通過讀取里面的標(biāo)簽和對應(yīng)的值即可。
$data?=?file_get_contents("php://input");
$result_xml?=?xml_parser_create();
xml_parse_into_struct($result_xml,?$data,?$vals,?$index);
xml_parser_free($result_xml);
foreach(?$vals?as?$k)
{
if(strtolower($k['tag'])!='xml')$result_array[strtolower($k['tag'])]?=?$k['value'];
}
//$result_array?就是通知xml數(shù)據(jù)轉(zhuǎn)換來的數(shù)組,接下來就簡單了,
//需要哪個數(shù)據(jù)就去$result_array數(shù)組里面找,然后根據(jù)字段值進(jìn)行具體的處理。
朋友,你不能在dom操作里邊用數(shù)組的方法直接調(diào)用屬性和vlaue
推薦你看下dom手冊和php手冊,當(dāng)然如有需要我可以給你發(fā)一份到郵箱
你可以用dom的操作來讀取
?php
$doc=new DOMDocument();
$doc-load("liuyan.xml");
$liuyan=$doc-getElementsByTagName("line");
foreach($liuyan as $ly)
{
$id=$ly-getAttribute("id");
$nicker=$ly-getElementsByTagName("nicker");
$nicker=$nicker-item(0)-nodeValue;
$nicker=iconv("utf-8","gb2312",$nicker);
$email=$ly-getElementsByTagName("email");
$email=$email-item(0)-nodeValue;
$url=$ly-getElementsByTagName("url");
$url=$url-item(0)-nodeValue;
$content=$ly-getElementsByTagName("content");
$content=$content-item(0)-nodeValue;
$content=iconv("utf-8","gb2312",$content);
$creatime=$ly-getElementsByTagName("create");
$creatime=$creatime-item(0)-nodeValue;
//$creatime=date("Y-m-j",$creatime);
// echo "nicker:".$nicker."email:".$email."url:".$url."content:".$content;
?
dom文檔
DOMDocument對象常用方法:
a)createElement(elementName) ---- 該方法以元素名為參數(shù)創(chuàng)建一個用此參數(shù)命名的元素節(jié)點。(不能創(chuàng)建名稱空間受限制的元素。如果要創(chuàng)建名稱空間受限制的元素,必須使用createNode()方法)
例: doc.createElement("PRODUCT"),有些用到:doc- creatElement('item')
b)createAttribute(attributeName) ---- 該方法以屬性名為參數(shù)創(chuàng)建一個用此參數(shù)命名的屬性節(jié)點。
例: doc.createAttribute("PRODID")
xml中表現(xiàn)形式:item upload_name="上3"download_name下載通道名稱/download_name/item
c)createComment(text) ---- 該方法以字符串為參數(shù)創(chuàng)建一個包含此字符串的注釋節(jié)點。
例: doc.createComment("This is an XML document")
item!--upload_name--download_name下載通道名稱/download_name/item
d)createTextNode(text) ---- 該方法以字符串為參數(shù)創(chuàng)建一個包含指定字符串的正文節(jié)點。
例: doc.createTextNode("Sony Workman")
e)createNode(type,name,namespace-URI) ---- 該方法創(chuàng)建元素節(jié)點。三個參數(shù),"類型"參數(shù)是variant型,既可以是字符串也可以是整型。第二個參數(shù)是字符串,它代表將要創(chuàng)建的節(jié)點的名字。第三個參數(shù)是代表namespace-URI的字符串。如果namespace-URI為空字符串,則新創(chuàng)建的節(jié)點就沒有名稱空間URI
例: doc.createNode("element","PRODUCT","")
doc.createNode("element","prod: PRODUCT","blog.csdn.net/fcrpg2005")
doc.createNode(1,"PRODUCT","")
f)getElementsByTagName(elementName) ---- 該方法以字符串為參數(shù)。這個字符串是要搜索的元素。返回IXMLDOMNodeList對象,包含指定元素名稱的節(jié)點的集合??梢杂眠@些節(jié)點信來瀏覽操縱存儲在指定元素中的值。
例: doc.getEelmentsByTagName("PRICE")
g)load(XMLdocument) ---- 該方法以字符串為參數(shù)。這個字符串是XML文檔的地址(HTTP地址或本地地址)
例: doc.load("")
doc.load("D:\product.xml")
h)loadXML(string) ---- 該方法把成形的XML代碼或整個XML文檔載入DOMDocument對象中。
例: doc.loadXML("?xml version=1.0PRODUCTSPRODUCTnameBarbie Doll/name/PRODUCT/PRODUCTS")
i)transformNode(stylesheet object) ---- 該方法以風(fēng)格表對象為參數(shù)。通過把相應(yīng)的風(fēng)格表加到XML文檔上來處理節(jié)點,然后返回轉(zhuǎn)換結(jié)果。
例: doc.transformNode("product.xsl")
j)appendChild(child node) ---- 該方法以對象為參數(shù)。把這個對象作為最后的子節(jié)點加在XML文檔上。createNode() 或者 createElement()方法可以創(chuàng)建節(jié)點或元素。但是它們不會把新建的節(jié)點加到文檔樹形結(jié)構(gòu)上。而是需要用appendChild()方法,insertBefore()方法,或者replaceChild()方法把新建的節(jié)點加上去。
例: doc.appendChild(root) ---- PS: root是一個用createNode()或createElement()方法創(chuàng)建的節(jié)點
k)save(destination) ---- 該方法以對象為參數(shù)。這個對象可以是一個DOMDocument對象也可以是一個文件名。save()方法把DOMDocument對象保存在指定的目的地。
例: doc.save("")
* DOMDocument對象常用屬性:
a)async ---- 該屬性用來指定是否允許異步加載。屬性async取布爾值。
例: doc.async = false --同步
b)childNodes ---- 該屬性返回屬于一個父節(jié)點的子節(jié)點集合(即返回當(dāng)前元素所有子元素的數(shù)組對象)。該屬性的值是對象IXMLDOMNodeList的類型。
例: var firstelem = doc.childNodes.item(0)
c)documentElement ---- 該屬性包含用對象DOMDocument表示的XML文檔的根元素。
例: var root = doc.documentElement
d)firstChild ---- 該屬性返回父元素的第一個子節(jié)點。該元素是只讀的。
例: var firstelem = doc.firstChild
e)lastChild ---- 該屬性返回父元素的最后一個子節(jié)點。
例: var lastelem = doc.lastChild
f)parseError ---- 該屬性返回一個包含大部分最近產(chǎn)生的錯誤信息的對象。
例: var error = doc.parseError
g)readyState ---- 該屬性返回XML文檔的狀態(tài)。它顯示這個文檔是否已完全載入。4個狀態(tài):0-未初始化、1-正在加載、2-已加載、3-交互中、4-已完成
例: var stateInfo = doc.readState
if(stateInfo == 4) { // Document loading
// Coding
}
h)xml ---- 該屬性返回一個節(jié)點以有其子節(jié)點的XML表示。
例: document.write(doc.xml)
i)validateOnParse ---- 該屬性指定解析器是否在解析XML文檔時驗證其合法性。
例: doc.validateOnParse = true
微信公眾號對接時,使用demo中提供的回調(diào)方法,發(fā)現(xiàn)WxpayAPI_php_v3/lib/WxPay.Api.php中notify方法中
$xml = $GLOBALS['HTTP_RAW_POST_DATA']; 此處$xml無法取得值
使用如下方式獲取post過來的內(nèi)容:
$xml = file_get_contents('php://input');
《 參考文章 》《 獲取post數(shù)據(jù)的方法 》