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

怎么用php解析xml文件

May 25, 2016 pm 04:42 PM
php解析xml 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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
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檔案概述:在開發網頁應用程式時,經常需要處理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