php通过xpath解析xml数据

原创 2016年06月01日 11:16:44
<?php
$xmlStr = '
<infos>
<para name="name"><note>note1</note><extra>extra1</extra></para>
<para></para>
<para><note>note2</note></para>
<para><note><para></para></note><extra>extra3</extra></para>
</infos>';
// xpath filepath
$xmlDoc = new  DOMDocument();
$xmlDoc->loadXML($xmlStr);
$xpath = new DOMXPath($xmlDoc); 
$result = $xpath->query('/infos/para');
//使用下标遍历
for ($i = 0;$i < $result->length;$i++) {
	# code...
}
//使用遍历器遍历
foreach ($result as $item) {//如果要使循环内对$item的处理影响到$result的值,可使用&$item替换$item
	//print_r($item);//结果1
	// foreach ($item->attributes as $childitem) {//遍历属性
		// print_r($childitem);//结果2
	// }
	if($item->attributes->length > 0){
			print_r($item->attributes->getNamedItem('name')->name);//结果3
	}
}




//结果1
// DOMElement Object
// (
//     [tagName] => para
//     [schemaTypeInfo] => 
//     [nodeName] => para
//     [nodeValue] => note1extra1
//     [nodeType] => 1
//     [parentNode] => (object value omitted)
//     [childNodes] => (object value omitted)
//     [firstChild] => (object value omitted)
//     [lastChild] => (object value omitted)
//     [previousSibling] => (object value omitted)
//     [nextSibling] => (object value omitted)
//     [attributes] => (object value omitted)
//     [ownerDocument] => (object value omitted)
//     [namespaceURI] => 
//     [prefix] => 
//     [localName] => para
//     [baseURI] => file:///D:/home/guoqiang_test/a2m-portal/
//     [textContent] => note1extra1
// )
// DOMElement Object
// (
//     [tagName] => para
//     [schemaTypeInfo] => 
//     [nodeName] => para
//     [nodeValue] => 
//     [nodeType] => 1
//     [parentNode] => (object value omitted)
//     [childNodes] => (object value omitted)
//     [firstChild] => 
//     [lastChild] => 
//     [previousSibling] => (object value omitted)
//     [nextSibling] => (object value omitted)
//     [attributes] => (object value omitted)
//     [ownerDocument] => (object value omitted)
//     [namespaceURI] => 
//     [prefix] => 
//     [localName] => para
//     [baseURI] => file:///D:/home/guoqiang_test/a2m-portal/
//     [textContent] => 
// )
// DOMElement Object
// (
//     [tagName] => para
//     [schemaTypeInfo] => 
//     [nodeName] => para
//     [nodeValue] => note2
//     [nodeType] => 1
//     [parentNode] => (object value omitted)
//     [childNodes] => (object value omitted)
//     [firstChild] => (object value omitted)
//     [lastChild] => (object value omitted)
//     [previousSibling] => (object value omitted)
//     [nextSibling] => (object value omitted)
//     [attributes] => (object value omitted)
//     [ownerDocument] => (object value omitted)
//     [namespaceURI] => 
//     [prefix] => 
//     [localName] => para
//     [baseURI] => file:///D:/home/guoqiang_test/a2m-portal/
//     [textContent] => note2
// )
// DOMElement Object
// (
//     [tagName] => para
//     [schemaTypeInfo] => 
//     [nodeName] => para
//     [nodeValue] => extra3
//     [nodeType] => 1
//     [parentNode] => (object value omitted)
//     [childNodes] => (object value omitted)
//     [firstChild] => (object value omitted)
//     [lastChild] => (object value omitted)
//     [previousSibling] => (object value omitted)
//     [nextSibling] => (object value omitted)
//     [attributes] => (object value omitted)
//     [ownerDocument] => (object value omitted)
//     [namespaceURI] => 
//     [prefix] => 
//     [localName] => para
//     [baseURI] => file:///D:/home/guoqiang_test/a2m-portal/
//     [textContent] => extra3
// )
// 结果2
// (
//     [name] => name
//     [specified] => 1
//     [value] => name
//     [ownerElement] => (object value omitted)
//     [schemaTypeInfo] => 
//     [nodeName] => name
//     [nodeValue] => name
//     [nodeType] => 2
//     [parentNode] => (object value omitted)
//     [childNodes] => (object value omitted)
//     [firstChild] => (object value omitted)
//     [lastChild] => (object value omitted)
//     [previousSibling] => 
//     [attributes] => 
//     [ownerDocument] => (object value omitted)
//     [namespaceURI] => 
//     [prefix] => 
//     [localName] => name
//     [baseURI] => file:///D:/home/guoqiang_test/a2m-portal/
//     [textContent] => name
// )
//结果3
//name

XML Elemnt元素节点类型为 DOMElement 类型,在这里他的集合(如childNodes,只包含下一层的Element)类型为DOMNodeList,DOMNodeList可通过遍历器便利,或通过下标使用item(index)方法遍历(index为你指定的下标ID);Elment元素的值为nodeValue,它为其包含类的所有文本节点的结合如

<para><note><para>para</para></note><extra>extra3</extra></para>

最外层para Element节点的nodeValue值为paraextra3;


XML Attr属性节点类型为 DOMAttr 类型,在这里他的集合(如attributes)类型为DOMNamedNodeMap,DOMNamedNodeMap可通过遍历器遍历,或通过下标使用item(index)方法遍历(index为你指定的下标ID),也可通过属性名使用getNamedItem(Name)获取指定Name的属性

版权声明:本文为博主原创文章,未经博主允许不得转载。

PHP环境下Memcache的使用方法

原文地址:http://www.nowamagic.net/librarys/veda/detail/332 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据...

PHP使用xpath解析XML实例教程

XML文件在PHP网站开发的轻量级应用中使用非常广泛,而PHP解析和读取XML文件的方式有很多种,比如JS DOM、SimpleXml、Xpath等方式解析XML文件,今天来讲讲在PHP中使用Xpat...

xslt与xpath入门转换xml文档与数据

  • 2010年05月21日 20:52
  • 3.41MB
  • 下载

PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门

XPAth技术        XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点。主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]。   ...

java中使用xPath读取xml中的数据

XPath是获取xml中数据的一种方式,其简单语法结构如下(引用自w3c): XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps)...

DOM /XPath模型处理XML 数据

1、XML 文档对象模型(DOM) 类是XML 文档的内存中表示形式,它在内存中表示是常见的结构化方法,尽管实际的XML 数据在文件中时或从另一个对象传入时以线性方式存储。 主要执行DOM 查询类和方...
  • rockywu
  • rockywu
  • 2011年11月22日 22:16
  • 263

xpath提取xml文档数据

xpath提取xml文档数据 [java] view plaincopy package cn.hmm.day5;      import java.i...

XPath 教程 关于 XML语言解析

  • 2011年03月14日 23:42
  • 90KB
  • 下载

pugixml 一个xml解析库 简单快速, 支持XPath表达式, 感谢作者

只是简单的翻译了pugixml文档,暂时未翻译XPath部分. /* 1.对象模型 pugixaml存储XML数据为DOM风格,整个xml文档(文档结构和元素数据)被存储在内存中作为一棵树.这棵树可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php通过xpath解析xml数据
举报原因:
原因补充:

(最多只允许输入30个字)