您的位置:首页 > 编程语言 > PHP开发

php解析XML

2014-03-20 18:26 232 查看
本文根据w3c整理

建立 XMLDemo.php,如下:

<?php
/**
* 有两种基本的 XML 解析器类型:
基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了 API 来访问树种的元素,
例如文档对象模型 (DOM)。
基于事件的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。
*/

//基于 Expat 解析器

$parser=xml_parser_create(); //通过 xml_parser_create() 函数初始化 XML 解析器
function start($parser,$element_name,$element_attrs) //从这里开始
{
switch($element_name)
{
case "NOTE":
echo "-- Note --<br />";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}

//Function to use at the end of an element
function stop($parser,$element_name) //从这里结束
{
echo "<br />";
}

//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}

// xml_set_element_handler()函数定义当解析器遇到开始和结束标签时执行哪个函数
xml_set_element_handler($parser,"start","stop");

//xml_set_character_data_handler() 函数来定义,当解析器遇到字符数据时执行哪个函数
xml_set_character_data_handler($parser,"char");

//打开XML文件
$fp=fopen("note.xml","r");

//开始读取
while ($data=fread($fp,4096))
{
//通过 xml_parse() 函数来开始解析文件 "note.xml",
xml_parse($parser,$data,feof($fp)) or
//万一有错误的话,添加 xml_error_string() 函数把 XML 错误转换为文本说明
die (sprintf("XML 错误: %s at line %d",xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); //函数获取 XML 解析器的当前行号
}

//xml_parser_free() 函数来释放分配给 xml_parser_create() 函数的内
xml_parser_free($parser);

echo "<br>";
echo "<br>";

//======================================通过内建的 DOM 解析器使在 PHP 中处理 XML

echo "通过内建的 DOM 解析器使在 PHP 中处理 XML"."<br>";
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();

echo "<br>";
echo "<br>";
/**
* 循环 XML
* 我们要初始化 XML 解析器,加载 XML,并循环 <note> 元素的所有元素:
*/

$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br />";
}

//======================================使用 SimpleXML解析xml文件
echo "<br>";
echo "<br>";
echo "使用 SimpleXML解析xml文件"."<br>";

$xml = simplexml_load_file("note.xml");

echo $xml->getName() . "<br />";

foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br />";
}


建立XML文档,note.xml,如下:

<?xml version="1.0" encoding="utf-8" ?>
<note>
<to>majianjie1</to>
<from>majianjie2</from>
<HEADING>reminber</HEADING>
<body>this afternoon have a meeting</body>
</note>


结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php解析XML php与XML