要处理 XML 文件,有两种传统的处理思路: SAX 和 DOM 。 SAX 基于事件触发机制,对 XML 文件进行一次扫描,完成要进行的处理; DOM 则将整个 XML 文件构造为一棵 DOM树,通过对 DOM 树的遍历完成处理。这两种方法各有优缺点, SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门。PHP5 推出了一套新的 XML 处理函数,即 SimpleXML 。名如其实, SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起 XML 文件功能却非常强大,操作也非常的简单。
一,什么是xml,xml有什么用途
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。
二,php读取xml的方法
xml源文件
1)DOMDocument读取xml
$doc->load("person.xml"); //读取xml文件
$humans = $doc->getElementsByTagName( "humans" ); //取得humans标签的对象数组
foreach( $humans as $human )
{
$names = $human->getElementsByTagName( "name" ); //取得name的标签的对象数组
$name = $names->item(0)->nodeValue; //取得node中的值,如
$sexs = $human->getElementsByTagName( "sex" );
$sex = $sexs->item(0)->nodeValue;
$olds = $human->getElementsByTagName( "old" );
$old = $olds->item(0)->nodeValue;
echo "$name - $sex - $old\n";
}
?>
2)simplexml读取xml
foreach($xml_array as $tmp){
echo $tmp->name."-".$tmp->sex."-".$tmp->old."
";
}
?>
3)用php正则表达式来记取数据
$f = fopen("person.xml", "r");
while( $data = fread( $f, 4096 ) ) {
$xml .= $data;
}
fclose( $f );
// 上面读取数据
preg_match_all( "/\
foreach( $humans[1] as $k=>$human )
{
preg_match_all( "/\
preg_match_all( "/\
preg_match_all( "/\
}
foreach($name[1] as $key=>$val){
echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."
" ;
}
?>
4)xmlreader来读取xml数据
$reader = new XMLReader();
$reader->open("person.xml"); //读取xml数据
$i=1;
while ($reader->read()) { //是否读取
if ($reader->nodeType == XMLReader::TEXT) { //判断node类型
if($i%3){
echo $reader->value; //取得node的值
}else{
echo $reader->value."
" ;
}
$i++;
}
}
?>
使用 DOMDocument 操控 XML
1. DOMDocument 解析 XML
代码如下// 创建一个 DOMDocument()
$_doc = new DOMDocument();
// 载入 xml
$_doc ->load( "test.xml" );
// 取 version 标签
$_version = $_doc ->getElementsByTagName( "version" );
echo $_version ->item( 2 )->nodeValue;
// 遍历 version 标签
foreach ( $_version as $v ) {
echo $v ->nodeValue;
}
2. DOMDocument 生成 XML
// 声明 xml
$_doc = new DOMDocument( "1.0" , "utf-8" );
// 排版格式
$_doc ->formatOutput = true ;
// 创建一个主标签
$_root = $_doc ->createElement( "root" );
// 创建一个一级标签 version
$_version = $_doc ->createElement( "version" );
// 给 version 标签里赋值
$_versionTextNode = $_doc ->createTextNode( "1.0" );
// 将值放入 version 标签里
$_version ->appendChild( $_versionTextNode );
// 将一级标签 version 放入 root 里
$_root ->appendChild( $_version );
// 将主标签写入 xml
$_doc ->appendChild( $_root );
// 生成 xml
$_doc ->save( "aaa.xml" );
很多情况下 , 手工生成标记要求从上到下生成文档 , 必须保证标签都是完整的 , 开始和结束标签。尽管借助于一些 PHP 函数或类可以有所改善,不过 PHP 还提供了一组更有帮助的内置对象和函数。文档对象模型( Document Object Model , DOM )提供了一个树状结构,能很容易创建和处理标签。
三,小结
读取xml的方法很多,简单举几个。上面四种方法都是可以把标签中的数据读出来,
xmlreader的设计重点是为了读data里面的name sex old的值,而读取的内容就比较麻烦了。他相当于jquery中attr("");这个东西。
[phpstudy]php xmlreader simplexml DOMDocument等读取xml的例子
http://m.bbyears.com/wangyezhizuo/70548.html
推荐访问:phpstorm php面试题 php数组转字符串 php教程