亲手打的,经过测试的,采纳吧
公司主营业务:网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出凌海免费做网站回馈大家。
?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[他又无法求助于警察,他现在必须找到露辛达,依靠两个人的力量夺回曾经宁静的生活。]]/des/video/list/rss';
$result = simplexml_load_string($xml);
//var_dump($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;
}
?
%
dim xml,objNode,objAtr,nCntChd,nCntAtr
Set xml=Server.CreateObject("Microsoft.XMLDOM")
xml.Async=False
xml.Load(Server.MapPath("test.xml"))
Set objNode=xml.documentElement
nCntChd=objNode.ChildNodes.length-1
'这个可以定义asp读取xml文件的那一个值,通过传递这个值来确定读取的数据
for i=0 to nCntChd
set objAtr=objNode.ChildNodes.item(i)
nCntAtr=objAtr.Attributes.length-1
'历遍一条记录里面的所有的记录项,记录是从0开始的
for j=0 to nCntAtr
response.write objAtr.Attributes.item(j).Text"br"
next
response.write "br"
next
Set objAtr=Nothing
Set objNode=Nothing
Set xml=Nothing
%
?php
/**
* 功能:解析xml数据转换成二维数组
*
* @param string $dataXml
* @return array
*/
public static function getXmlData ( $strXml ) {
$pos = strpos($strXml, 'xml');
if ($pos) {
$xmlCode =simplexml_load_string($strXml,'SimpleXMLElement', LIBXML_NOCDATA);
$arrayCode=self::get_object_vars_final($xmlCode);
return $arrayCode ;
} else {
return '';
}
}
?
PHP解析微信支付结果返回的xml的方法是通过自定义方法和第三方组件DomDocument实现的。
1、解析代码如下:
?PHP
header("Content-type:text/html; Charset=utf-8");
$url = "";
// 加载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 module_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
//读取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/";
}
}
朋友,你不能在dom操作里边用数组的方法直接调用属性和vlaue
推荐你看下dom手册和php手册,当然如有需要我可以给你发一份到邮箱
你可以用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) ---- 该方法以元素名为参数创建一个用此参数命名的元素节点。(不能创建名称空间受限制的元素。如果要创建名称空间受限制的元素,必须使用createNode()方法)
例: doc.createElement("PRODUCT"),有些用到:doc- creatElement('item')
b)createAttribute(attributeName) ---- 该方法以属性名为参数创建一个用此参数命名的属性节点。
例: doc.createAttribute("PRODID")
xml中表现形式:item upload_name="上3"download_name下载通道名称/download_name/item
c)createComment(text) ---- 该方法以字符串为参数创建一个包含此字符串的注释节点。
例: doc.createComment("This is an XML document")
item!--upload_name--download_name下载通道名称/download_name/item
d)createTextNode(text) ---- 该方法以字符串为参数创建一个包含指定字符串的正文节点。
例: doc.createTextNode("Sony Workman")
e)createNode(type,name,namespace-URI) ---- 该方法创建元素节点。三个参数,"类型"参数是variant型,既可以是字符串也可以是整型。第二个参数是字符串,它代表将要创建的节点的名字。第三个参数是代表namespace-URI的字符串。如果namespace-URI为空字符串,则新创建的节点就没有名称空间URI
例: doc.createNode("element","PRODUCT","")
doc.createNode("element","prod: PRODUCT","blog.csdn.net/fcrpg2005")
doc.createNode(1,"PRODUCT","")
f)getElementsByTagName(elementName) ---- 该方法以字符串为参数。这个字符串是要搜索的元素。返回IXMLDOMNodeList对象,包含指定元素名称的节点的集合。可以用这些节点信来浏览操纵存储在指定元素中的值。
例: doc.getEelmentsByTagName("PRICE")
g)load(XMLdocument) ---- 该方法以字符串为参数。这个字符串是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) ---- 该方法以风格表对象为参数。通过把相应的风格表加到XML文档上来处理节点,然后返回转换结果。
例: doc.transformNode("product.xsl")
j)appendChild(child node) ---- 该方法以对象为参数。把这个对象作为最后的子节点加在XML文档上。createNode() 或者 createElement()方法可以创建节点或元素。但是它们不会把新建的节点加到文档树形结构上。而是需要用appendChild()方法,insertBefore()方法,或者replaceChild()方法把新建的节点加上去。
例: doc.appendChild(root) ---- PS: root是一个用createNode()或createElement()方法创建的节点
k)save(destination) ---- 该方法以对象为参数。这个对象可以是一个DOMDocument对象也可以是一个文件名。save()方法把DOMDocument对象保存在指定的目的地。
例: doc.save("")
* DOMDocument对象常用属性:
a)async ---- 该属性用来指定是否允许异步加载。属性async取布尔值。
例: doc.async = false --同步
b)childNodes ---- 该属性返回属于一个父节点的子节点集合(即返回当前元素所有子元素的数组对象)。该属性的值是对象IXMLDOMNodeList的类型。
例: var firstelem = doc.childNodes.item(0)
c)documentElement ---- 该属性包含用对象DOMDocument表示的XML文档的根元素。
例: var root = doc.documentElement
d)firstChild ---- 该属性返回父元素的第一个子节点。该元素是只读的。
例: var firstelem = doc.firstChild
e)lastChild ---- 该属性返回父元素的最后一个子节点。
例: var lastelem = doc.lastChild
f)parseError ---- 该属性返回一个包含大部分最近产生的错误信息的对象。
例: var error = doc.parseError
g)readyState ---- 该属性返回XML文档的状态。它显示这个文档是否已完全载入。4个状态:0-未初始化、1-正在加载、2-已加载、3-交互中、4-已完成
例: var stateInfo = doc.readState
if(stateInfo == 4) { // Document loading
// Coding
}
h)xml ---- 该属性返回一个节点以有其子节点的XML表示。
例: document.write(doc.xml)
i)validateOnParse ---- 该属性指定解析器是否在解析XML文档时验证其合法性。
例: doc.validateOnParse = true