`

PHP 简单处理 XML

    博客分类:
  • PHP
阅读更多

PS:原创文章,如需转载,请注明出处,谢谢!     

本文地址:http://flyer0126.iteye.com/blog/1502504

 

一、手动输出xml

/*
 * 手动输出xml
 * @author flyer0126
 * @since 2012/4/27
 */
header("Content-Type:text/xml");
print '<?xml version="1.0"?>'."\n";
print "<shows>\n";

$shows = array(
                array(
                        'name' => 'aa',
                        'channel' => 'a1',
                        'start' => 'a2'
                ),
                array(
                        'name' => 'bb',
                        'channel' => 'b1',
                        'start' => 'b2'
                ),
                array(
                        'name' => 'cc',
                        'channel' => 'c1',
                        'start' => 'c2'
                )
);
foreach($shows as $show)
{
    print "<show>\n";
    foreach($show as $tag => $val)
    {
        print "<$tag>".htmlspecialchars($val)."</$tag>\n";
    }
    print "</show>\n";
}
print "</shows>\n";

/**
<?xml version="1.0"?>
<shows>
<show>
<name>aa</name>
<channel>a1</channel>
<start>a2</start>
</show>
<show>
<name>bb</name>
<channel>b1</channel>
<start>b2</start>
</show>
<show>
<name>cc</name>
<channel>c1</channel>
<start>c2</start>
</show>
</shows>
**/
 

 

二、通过DOMDocument生成xml

/*
 * 通过DOMDocument生成xml
 * @author flyer0126
 * @since 2012/4/27
 */

// 创建新文档
$dom = new DOMDocument("1.0", "UTF-8");
// 创建根元素humans,并将其添加至文档
$humans = $dom->appendChild($dom->createElement("humans"));
// 创建根元素zhangying,并将其添加至humans
$zhangying = $humans->appendChild($dom->createElement("zhangying"));
// 创建name元素,并将其添加至zhangying
$name = $zhangying->appendChild($dom->createElement("name"));
$name->appendChild($dom->createTextNode("张映"));
$sex = $zhangying->appendChild($dom->createElement("sex"));
$sex->appendChild($dom->createTextNode("男"));
$old = $zhangying->appendChild($dom->createElement("old"));
$old->appendChild($dom->createTextNode("28"));

// 创建根元素tank,并将其添加至humans
$tank = $humans->appendChild($dom->createElement("tank"));
// 创建name元素,并将其添加至tank
$name = $tank->appendChild($dom->createElement("name"));
$name->appendChild($dom->createTextNode("tank"));
$sex = $tank->appendChild($dom->createElement("sex"));
$sex->appendChild($dom->createTextNode("男"));
$old = $tank->appendChild($dom->createElement("old"));
$old->appendChild($dom->createTextNode("28"));


/*// 设置author元素
$author = $book->appendChild($dom->createElement("author"));
$author->appendChild($dom->createTextNode("zhangh"));
$author->setAttribute("class", "win_close");*/

// 输出
$dom->formatOutput = true;
header('Content-Type:text/xml');
echo $dom->saveXML();

// 将文档表现形式放于book变量中
//$book = $dom->saveXML();
// 将文档输出为book.xml文件
//$dom->save("humans.xml");

/**
    <?xml version="1.0 encoding="UTF-8"?>
    <humans>
    <zhangying>
    <name>张映</name>
    <sex>男</sex>
    <old>28</old>
    </zhangying>
    <tank>
    <name>tank</name>
    <sex>男</sex>
    <old>28</old>
    </tank>
    </humans> 
 **/
 

 

三、xml的读取

/*
 * xml的读取
 * @author flyer0126
 * @since 2012/4/27
 */

// 1. 利用simplexml_load_file读取简单的xml文件
$humans = simplexml_load_file("humans.xml");

foreach($humans as $key => $human)
{
    echo $human->name."->".$human->sex."->".$human->old."\n";
}

/**
张映->男->28
tank->男->28
**/


// 2. 利用DOMDocument读取xml
$dom = new DOMDocument();
$dom->load("humans.xml");
$humans = $dom->getElementsByTagName("humans");

foreach($humans as $key=>$human)
{
	$names = $human->getElementsByTagName("name");
	$olds = $human->getElementsByTagName("old");
	$sexes = $human->getElementsByTagName("sex");
	foreach($names as $k=>$name)
	{
		$name = $names->item($k)->nodeValue;
		$sex = $sexes->item($k)->nodeValue;
		$old = $olds->item($k)->nodeValue;
		
		echo "$name->$sex->$old\n";
	}
}

/**
张映->男->28
tank->男->28
**/


// 3. 利用正则来获取数据
$xml = '';
$f = fopen("humans.xml", "r");
while($data = fread($f, 2096))
{
	$xml .= $data;
}
fclose($f);

preg_match_all('/\<humans\>(.*?)\<\/humans\>/s', $xml, $humans);

foreach($humans[1] as $human)
{
	preg_match_all('/\<name\>(.*?)\<\/name\>/s', $human, $names);
	preg_match_all('/\<sex\>(.*?)\<\/sex\>/s', $human, $sexes);
	preg_match_all('/\<old\>(.*?)\<\/old\>/s', $human, $olds);
}

foreach($names[1] as $k=>$name)
{
	echo $names[1][$k].'-'.$sexes[1][$k].'-'.$olds[1][$k]."\n";
}

/**
张映->男->28
tank->男->28
**/


// 4. 利用XMLReader获取数据
$reader = new XMLReader();
$reader->open("humans.xml");
$i = 1;
while($reader->read())
{
	if($reader->nodeType == XMLReader::TEXT)
	{	
		if($i%3)
		{
			echo $reader->value;
		}else
		{
			echo $reader->value."\n";
		}
		$i++;
	}
}

/**
张映男28
tank男28
**/
分享到:
评论

相关推荐

    php下使用SimpleXML处理XML文件.pdf

    在PHP中,处理XML文件时,SimpleXML是一个非常实用的工具,尤其适合初学者。SimpleXML库提供了一种简单易用的方式来解析和操作XML文档。下面我们将详细讨论如何使用SimpleXML来处理XML文件。 1. **SimpleXML简介** ...

    php简单处理XML数据的方法示例

    本篇将详细介绍如何使用PHP简单处理XML数据,并给出一个实例演示。 首先,要处理XML数据,PHP提供了几个内置函数和类,如`simplexml_load_string`和`SimpleXMLElement`。在标题和描述的实例中,我们看到了如何使用`...

    php xml转数组

    虽然具体代码未给出,但通常此类会包含一些自定义方法来处理XML到数组的转换,例如优化性能,处理特定的XML结构等。 总之,PHP提供了多种方法将XML数据转换为数组,可以根据项目需求选择合适的方式。理解这些基础...

    php 处理 xml 文件

    SimpleXMLElement适合快速、简单地处理XML,而DOMDocument则提供了更底层的控制,适合处理更复杂的结构和操作。无论选择哪种方式,PHP都提供了强大的工具来处理XML数据,帮助开发者高效地完成任务。

    php中处理xml

    ### PHP中处理XML知识点详解 #### 一、引言与背景 随着互联网技术的发展,XML(可扩展标记语言)作为一种重要的数据交换格式,在各种应用场景中扮演着关键角色。PHP作为广泛使用的服务器端脚本语言之一,能够高效地...

    php 与XML的例子

    SimpleXMLElement则提供了一种更简单的接口,用于处理XML文档。 以下是一个使用PHP解析XML的基本示例: ```php &lt;?php $xml = &lt;&lt;&lt;XML &lt;book title="PHP for Dummies"&gt; &lt;author&gt;John Doe &lt;year&gt;2005 ...

    PHP操作XML实例

    2. SimpleXML:PHP的SimpleXML扩展提供了一个更简单的接口来处理XML。它将XML文档转换为一个嵌套的对象,可以像访问数组一样访问元素和属性: ```php &lt;?php $xml = &lt;&lt;&lt;XML &lt;title&gt;PHP与MySQL web开发 &lt;author&gt;W....

    xml.rar_php xml_xml php

    2. SimpleXMLElement:这个类提供了一个更为简洁的接口来处理XML,适合简单的读取和写入操作。例如,读取XML文件中的节点值: ```php $xml = simplexml_load_file('file.xml'); $value = $xml-&gt;nodeName; ``` 3. ...

    php-xml

    综上所述,PHP与XML的结合提供了多种处理XML文档的方法,从简单的读写到复杂的解析和生成,以及数据交换和Web服务,涵盖了各种实际应用需求。理解并熟练掌握这些知识点,将有助于提高PHP开发中的XML处理能力。

    PHP操作xml类

    首先,我们有一个名为"xml.php"的类文件,这个类可能是对PHP内置的DOMDocument或SimpleXMLElement类进行了封装,以便更方便地进行XML处理。在"index.php"中,我们可以看到这个XML类的具体使用示例,而"index.xml"则...

    PHP查询xml,以数组返回

    在PHP中,处理XML数据是一项常见的任务,尤其是在与外部数据源交互或进行数据转换时。本文将深入探讨如何使用PHP查询XML文档,并将查询结果以数组形式返回,以方便进一步处理。 首先,我们需要理解XML(Extensible ...

    php递归解析xml

    而PHP提供了处理XML的强大工具,如SimpleXML、DOMDocument和XMLReader等。本篇将详细介绍如何使用PHP的递归方法解析XML并将其转换为数组,以便在ExtJS的tree组件中使用。 首先,我们来讨论如何使用SimpleXML扩展来...

    php xml 转json和array

    PHP作为一种常用的服务器端脚本语言,提供了处理XML和JSON的强大功能。本篇文章将详细探讨如何在PHP中将XML转换为JSON和数组。 首先,我们来看XML转JSON。在PHP中,我们可以利用`json_encode()`函数和DOMDocument类...

    PHP经典实例--XML

    本专题将深入探讨PHP 5中处理XML的相关功能,包括简单XML扩展和DOM函数的改进,以及XPath和XSLT的运用,同时还会涉及读写RSS和Atom新闻推送。 1. **PHP 5的简单XML扩展(SimpleXML)** SimpleXML是PHP 5引入的一个...

    PHP实现XML与数据格式进行转换类

    总之,PHP提供了丰富的工具处理XML,使得在不同数据格式间转换变得简单高效。理解并熟练运用这些工具,能够提升你的开发效率和代码质量。对于给定的类文件,通过阅读和测试,你可以更好地了解XML转换的具体实现细节...

    php生成标准xml类

    总的来说,PHP提供了强大的DOM扩展库来处理XML,通过自定义类封装这些功能,可以方便地生成符合标准的XML文档,包括RSS feed。这个过程不仅可以提高代码的可读性和可维护性,还能确保XML的结构正确无误。

    PHP与XML格式操作

    - SimpleXML:这是PHP的一个内置扩展,提供了一个简单的接口来处理XML数据。它可以将XML文档转化为一个嵌套的对象结构,通过属性和方法直接访问和修改元素。 - SAX(Simple API for XML):SAX是一种事件驱动的...

    PHP读取XML显示到表格

    在实际项目中,可能还需要处理XML文件不存在、数据格式错误等异常情况,以及进行更复杂的数据处理和格式化。例如,对XML数据进行过滤、排序或计算。这都需要根据具体需求进行相应的编程实现。 综上所述,"PHP读取...

Global site tag (gtag.js) - Google Analytics