Home > php教程 > php手册 > body text

php中DOMDocument与SimpleXML创建与解析xml程序

WBOY
Release: 2016-05-25 16:42:06
Original
1422 people have browsed it

通过DOM扩展创建一个DOMDocument对象,通过DOMDocument对象的方法向文档添加元素,最后通过save()或saveXML()方法来生成文档,也可以通过SimpleXML来快速解析xml文档.

例子:DOM XML 解析器函数是 PHP 核心的组成部分,无需安装就可以使用这些函数.

XML文件,将在我们的例子中使用下面的 XML 文件,代码如下:

<?xml version="1.0" encoding="ISO-8859-1" 
	<note> 
	<to>George</to> 
	<from>John</from> 
	<heading>Reminder</heading> 
	<body>Don&#39;t forget the meeting!</body> 
	</note> 
Copy after login
Copy after login

加载和输出 XML,我们需要初始化 XML 解析器,加载 XML,并把它输出,例子代码如下:

<?php 
	$xmlDoc = new DOMDocument(); 
	$xmlDoc->load("note.xml"); 
	 
	print $xmlDoc->saveXML(); 
	 
	 
	//以上代码的输出: 
	//George John Reminder Don&#39;t forget the meeting 
Copy after login

假如您在浏览器窗口中查看源代码,会看到下面这些 HTML,代码如下:

<?xml version="1.0" encoding="ISO-8859-1" 
	<note> 
	<to>George</to> 
	<from>John</from> 
	<heading>Reminder</heading> 
	<body>Don&#39;t forget the meeting!</body> 
	</note> 
Copy after login
Copy after login

上面的例子创建了一个 DOMDocument-Object,并把 "note.xml" 中的 XML 载入这个文档对象中.

saveXML() 函数把内部 XML 文档放入一个字符串,这样我们就可以输出它.例子代码如下:

<?php 
	//创建一个新文档 
	$dom = new DOMDocument(&#39;1.0&#39;); 
	 
	//创建根元素book,并将其添加到文档中 
	$book = $dom->appendChild($dom->createElement(&#39;book&#39;)); 
	 
	//创建一个title元素,并将其添加到$book中 
	$title = $book->appendChild($dom->createElement(&#39;title&#39;)); 
	$title->appendChild($dom->createTextNode(&#39;Php Book&#39;)); 
	//为title元素的添加属性cover,属性值soft 
	$title->setAttribute(&#39;cover&#39;,&#39;soft&#39;); 
	 
	//创建author元素,并将其添加到$book中 
	$kaifabu = $book->appendChild($dom->createElement(&#39;author&#39;)); 
	//为author元素添加文本 
	$kaifabu->appendChild($dom->createTextNode(&#39;kaifabu&#39;)); 
	 
	//创建author元素,并将其添加到$book中 
	$kaifabu = $book->appendChild($dom->createElement(&#39;author&#39;)); 
	//为author元素添加文本 
	$kaifabu->appendChild($dom->createTextNode(&#39;Younker&#39;)); 
	 
	//将格式化的DOM文档输出为XML 
	$dom->formatOutput = true; 
	 
	//生成books.xml文件 
	$dom->save(&#39;books.xml&#39;); 
	//此步把生成的XML以字符串形式显示 
	echo htmlentities($dom->saveXML()); 
	 
	 
	//输出结果如下: 
	//开源代码phprm.com 
	<?xml version="1.0"  
	<book> 
	  <title cover="soft">Php Book</title> 
	  <author>kaifabu</author> 
	  <author>Younker</author> 
	</book> 
Copy after login

注:如果上面生成XML这步改成$dom->save(‘books.xml’);直接生成一个books.xml文件.

下面我们利用simplexml来解析xml文件

SimpleXML 函数允许您把 XML 转换为对象,通过普通的属性选择器或数组迭代器,可以处理这个对象,就像处理任何其他对象一样.

其中的一些函数需要最新的 PHP 版本。

安装:SimpleXML 函数是 PHP 核心的组成部分,无需安装即可使用这些函数,代码如下:

<?php  
	//使用SimpleXML扩展解析XML文档,解析出来是一个对象,可以通过对象获取它的元素内容 
	$sx = simplexml_load_file(&#39;books.xml&#39;); 
	//获取title标签的内容 
	$title = $sx->title; 
	//因为有两个author元素,通过循环获取每个author元素内容 
	$authors = &#39;&#39;; 
	foreach($sx->author as $author) 
	{ 
	 $authors .= &#39;&&#39; . $author; 
	} 
	$authors = substr($authors, 1); 
	echo $title . &#39;:&#39; . $authors; 
	  
	//输出结果如下: 
	//Php Book:kaifabu&Younker 
Copy after login

PHP:指示支持该函数的最早的 PHP 版本.

SimpleXML函数

__construct() 创建一个新的 SimpleXMLElement 对象。 5 

addAttribute() 给 SimpleXML 元素添加一个属性。 5 

addChild() 给 SimpleXML 元素添加一个子元素。 5 

asXML() 从 SimpleXML 元素获取 XML 字符串。 5 

attributes() 获取 SimpleXML 元素的属性。 5 

children() 获取指定节点的子。 5 

getDocNamespaces() 获取 XML 文档的命名空间。 5 

getName() 获取 SimpleXML 元素的名称。 5 

getNamespaces() 从 XML 数据获取命名空间。 5 

registerXPathNamespace() 为下一次 XPath 查询创建命名空间语境。 5 

simplexml_import_dom() 从 DOM 节点获取 SimpleXMLElement 对象。 5 

simplexml_load_file() 从 XML 文档获取 SimpleXMLElement 对象。 5 

simplexml_load_string() 从 XML 字符串获取 SimpleXMLElement 对象。 5 

文章网址:

随意转载^^但请附上教程地址。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!