搜尋
首頁php教程php手册怎么用php解析xml文件

xml文件是一种数据存储格式,下面小编给大家介绍php解析xml格式文件的多种方法总结介绍,DOMDocument是我们常用的解析xml一个不错的方法,下面我来给大家总结总结.

DOMElement:DOMElement DOMDocument::createElement ( string $name [, string $value ] )

创建节点元素:

String $name:节点名

String $value:节点的值

添加节点:

•DOMNode DOMNode::appendChild ( DOMNode $newnode ) 

添加子节点:

DOMNode $newnode:新节点

在dom操作中,增删改操作必须依赖于父节点

保存:

•string DOMDocument::saveXML 

保存至某个字符串中

•int DOMDocument::save ( string $filename ) 

保存至某个文件中

String $filename:文件名

删除节点

•DOMNode DOMNode::removeChild ( DOMNode $oldnode ) 

删除节点

DOMNode $oldnode:要删除的节点

更新节点

•DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode ) 

DOMNode $newnode:新节点

DOMNode $oldnode:原节点

添加属性

•DOMAttr DOMElement::setAttribute( string $name , string $value ) 

string $name:属性名

string $value:属性值

修改属性

DOMAttr DOMElement::setAttribute( string $name , string $value ) 

string $name:属性名

string $value:属性值

删除属性

•bool DOMElement::removeAttribute ( string $name )

string $name:要删除的属性名称

获取属性

•string DOMElement::getAttribute ( string $name )

string $name:要获取的属性值的属性名

DOMDocument还是PHP5后推出的DOM扩展的一部分,可用来建立或解析html/xml,目前只支持utf-8编码,代码如下:

$xmlstring = <<<XML 
	<?xml version=&#39;1.0&#39; 
	<document> 
	  <cmd attr=&#39;default&#39;>login</cmd> 
	  <login>imdonkey</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); 
	      } 
	    } 
	  }//开源代码phprm.com 
	  } else { 
	    return $node->nodeValue; 
	  } 
	  return $array; 
	}

SimpleXML

SimpleXML是PHP5后提供的一套简单易用的xml工具集,可以把xml转换成方便处理的对象,也可以组织生成xml数据,不过它不适用于包含namespace的xml,而且要保证xml格式完整(well-formed),它提供了三个方法:simplexml_import_dom、simplexml_load_file、simplexml_load_string,函数名很直观地说明了函数的作用,三个函数都返回SimpleXMLElement对象,数据的读取/添加都是通过SimpleXMLElement操作,代码如下:

$string = <<<XML 
	<?xml version=&#39;1.0&#39; 
	<document> 
	  <cmd>login</cmd> 
	  <login>imdonkey</login> 
	</document> 
	XML; 
	 
	$xml = simplexml_load_string($string); 
	print_r($xml); 
	$login = $xml->login;//这里返回的依然是个SimpleXMLElement对象 
	print_r($login); 
	$login = (string) $xml->login;//在做数据比较时,注意要先强制转换 
	print_r($login);

SimpleXML的优点是开发简单,缺点是它会将整个xml载入内存后再进行处理,所以在解析超多内容的xml文档时可能会力不从心,如果是读取小文件,而且xml中也不包含namespace,那SimpleXML是很好的选择.

XMLReader

XMLReader也是PHP5之后的扩展(5.1后默认安装),它就像游标一样在文档流中移动,并在每个节点处停下来,操作起来很灵活,它提供了对输入的快速和非缓存的流式访问,可以读取流或文档,使用户从中提取数据,并跳过对应用程序没有意义的记录.

以一个利用google天气api获取信息的例子展示下XMLReader的使用,这里也只涉及到一小部分函数,更多还请参考官方文档,代码如下:

$xml_uri = &#39;http://www.google.com/ig/api?weather=Beijing&hl=zh-cn&#39;; 
	$current = array(); 
	$forecast = array(); 
	 
	$reader = new XMLReader(); 
	$reader->open($xml_uri, &#39;gbk&#39;); 
	while ($reader->read()) { 
	  //get current data 
	  if ($reader->name == "current_conditions" && $reader->nodeType == XMLReader::ELEMENT) { 
	    while($reader->read() && $reader->name != "current_conditions") { 
	      $name = $reader->name; 
	      $value = $reader->getAttribute(&#39;data&#39;); 
	      $current[$name] = $value; 
	    } 
	  } 
	 
	  //get forecast data 
	  if ($reader->name == "forecast_conditions" && $reader->nodeType == XMLReader::ELEMENT) { 
	    $sub_forecast = array(); 
	    while($reader->read() && $reader->name != "forecast_conditions") { 
	      $name = $reader->name; 
	      $value = $reader->getAttribute(&#39;data&#39;); 
	      $sub_forecast[$name] = $value; 
	    } 
	    $forecast[] = $sub_forecast; 
	  } 
	} 
	$reader->close();

XMLReader和XML Parser类似,都是边读边操作,较大的差异在于SAX模型是一个“推送”模型,其中分析器将事件推到应用程序,在每次读取新节点时通知应用程序,而使用XmlReader的应用程序可以随意从读取器提取节点,可控性更好.

由于XMLReader基于libxml,所以有些函数要参考文档看看是否适用于你的libxml版本.

本文地址:

转载随意,但请附上文章地址:-)

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
xml文件是干嘛的xml文件是干嘛的Aug 03, 2023 am 09:38 AM

XML文件是用于描述和传输数据的一种标记语言。它以其可扩展性、可读性和灵活性而闻名,广泛应用于Web应用程序、数据交换和Web服务。XML的格式和结构使得数据的组织和解释变得简单明了,从而提高了数据的交换和共享效率 。

xml文件打开方法xml文件打开方法Feb 22, 2024 pm 04:04 PM

常见的XML文件打开方法:1、文本编辑器;2、浏览器;3、XML编辑器;4、集成开发环境;5、Microsoft Excel等等。

xml文件是什么xml文件是什么Jan 04, 2021 am 10:59 AM

xml文件一般指里面写有可扩展标记语言的文件,XML是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

怎么打开xml文件怎么打开xml文件Aug 02, 2023 pm 03:35 PM

xml文件可以使用文本编辑器、浏览器、XML编辑器和集成开发环境打开。1、文本编辑器,只需右键单击文件并选择适当的编辑器即可打开;2、浏览器,只需双击文件或将其拖放到浏览器窗口中即可打开;3、XML编辑器,这些工具具有XML语法的高亮显示、自动完成、语法检查和验证等功能,使我们能够更方便地编辑和管理XML文件;4、集成开发环境,供专门的功能来创建、编辑和调试XML文件。

xml文件怎么去打开xml文件怎么去打开Jan 10, 2024 pm 03:44 PM

打开 XML即可扩展标记语言文件的方法是:1、在计算机上安装一个文本编辑软件;2、打开文本编辑软件,然后在菜单中选择“文件”->“打开”;3、在弹出的文件浏览器窗口中,找到要打开的 XML 文件,选中它并点击“打开”;4、系统将使用您选择的文本编辑软件打开 XML 文件,并显示其内容。

在PHP中实现如何从XML文件中提取特定的数据在PHP中实现如何从XML文件中提取特定的数据Jul 28, 2023 pm 01:52 PM

在PHP中实现如何从XML文件中提取特定的数据XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它具有可读性强和易于解析的特点。在PHP中,我们可以使用各种方式来提取XML文件中的特定数据,以满足我们的需求。要从XML文件中提取数据,首先我们需要将XML文件加载到PHP中,可以使用SimpleXMLElement类来完成这个任务。然后,我们可以使用

PHP和XML:如何解析XML文件PHP和XML:如何解析XML文件Aug 08, 2023 am 09:33 AM

PHP和XML:如何解析XML文件概述:在开发Web应用程序时,经常需要处理XML数据。PHP提供了许多内置的函数和类来解析和操作XML文件。本文将介绍如何使用PHP解析XML文件,并提供一些代码示例。PHP内置的XML解析函数PHP提供了一些内置的函数来解析XML文件:simplexml_load_file():将XML

php如何使用XML?php如何使用XML?Jun 04, 2023 pm 09:51 PM

PHP是一种广泛使用的开源服务器端脚本语言,它具有开发简单、快速以及可扩展性好的优点。同时,XML(可扩展标记语言)也被广泛使用,它用于存储、传输和显示数据。在PHP中,XML在处理数据和信息方面也有着重要的作用,因为它可以充分利用XML的优势来快速轻松地处理数据。下面我们来详细了解如何使用PHP处理XML。引入XML文件在PHP中,通过数据流、文件和URL

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版