资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

phpxml数据解析,php xml解析

php读取XML文件,并解析成数组

simplexml_load_string可以把xml解析成对象,然后可以用var_dump进行解析。

成都创新互联是一家专业提供桐城企业网站建设,专注与成都做网站、网站制作、成都外贸网站建设H5页面制作、小程序制作等业务。10年已为桐城众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

php内部库并没有包含直接把xml解析成数组的模块。

而且xml本来包含节点概念,解析成对象以后可以直接访问每一个节点,而数组相对就要难以理解的多。

因此解析成数组并不比解析成对象有多少优势。

如果你对数组实在有需求的话,可以自己写一个库,并不会太难。

关于PHP解析XML文件的..

朋友,你不能在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

php 如何解析xml格式字符串

//假设xml字符串

$postStr = 'xmlToUserName![CDATA[toUser]]/ToUserNameFromUserName![CDATA[FromUser]]/FromUserNameCreateTime123456789/CreateTimeMsgType![CDATA[text]]/MsgTypeContent![CDATA[p1]]/Content/xml';

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

var_dump($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数据

先给你个以前写的读取xml格式的天气预报的代码吧,比着葫芦画瓢,不懂再追问

?php

$apistr=file_get_contents(";ak=B8aced94da0b345579f481a1294c9094"); //获取xml内容

$apiobj=simplexml_load_string($apistr);//解析xml代码

$todayobj=$apiobj-results-result[0]-date;//读取星期

$weatherobj=$apiobj-results-result[0]-weather;//读取天气

$windobj=$apiobj-results-result[0]-wind;//读取风力

$temobj=$apiobj-results-result[0]-temperature;//读取温度

$contentStr = "上海\n{$todayobj}\n天气:{$weatherobj}\n风力:{$windobj}\n温度:{$temobj}";

echo $contentStr;

?

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

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

解析方法如下:

$xmlstring = XML

?xml version='1.0'?

document

cmd attr='default'login/cmd

loginimdonkey/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

亲手打的,经过测试的,采纳吧

?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;

}

?


当前标题:phpxml数据解析,php xml解析
链接URL:http://cdkjz.cn/article/heggcs.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220