PHP创建与解析XML
来源:互联网 发布:微信发假金额红包软件 编辑:程序博客网 时间:2024/05/20 18:46
随着 XML 不断的升温, PHP 提供了大量的用来专门处理 XML 的标准库 ( 类库 ) 来操控 XML 。例如 ,DOM XML 扩展的改写、 SimpleXML 扩展、 SOAP 扩展,还有PHP5.1 的 XMLReader 和XMLWrite 扩展等。
一. 使用 SimpleXML 操控 XML
要处理 XML 文件,有两种传统的处理思路: SAX 和 DOM 。 SAX 基于事件触发机制,对 XML 文件进行一次扫描,完成要进行的处理; DOM 则将整个 XML 文件构造为一棵 DOM树,通过对 DOM 树的遍历完成处理。这两种方法各有优缺点, SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门。PHP5 推出了一套新的 XML 处理函数,即 SimpleXML 。名如其实, SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起 XML 文件功能却非常强大,操作也非常的简单。
- 1. 创建 XML 文件
- $ _ xml = <<<xml
- <?xml version="1.0" encoding="utf-8"?>
- <root>
- <version>1.0</ version >
- <info>xml 解析测试 </info>
- <user>
- <name> 灭尽尘埃 </name>
- <url>http://www.google.com.hk</url>
- <author sex=" 男 "> 杨泽 </author>
- </user>
- <user>
- <name> CSDN </name>
- <url>http://www.csdn.net</url>
- <author sex=" 女 "> 谁谁谁 </author>
- </user>
- <user>
- <name> 电驴 </name>
- <url>http://www.verycd.com</url>
- <author sex=" 男 "> 姓黄的 </author>
- </user>
- </root>
- xml;
- $ _sxe = new SimpleXMLElement( $ _xml ); // 创建对象解析 xml 字符串
- $ _sxe ->asXML( 'test.xml' ); // 生成 XML 文件
- 2. 载入 XML 文件
- $ _sxe = simplexml_load_file( "test.xml" ); // 载入 XML 文件
- var_dump( $ _sxe ); // 输出相关信息
- print_r( $ _sxe ); // 输出主要信息
- Reflection::export( new ReflectionClass( $sxe )); // 用反射查看详情
- 3. 解析 XML 文件
- $ _sxe = simplexml_load_file( "test.xml" ); // 载入 XML 文件
- var_dump( $ _sxe ); // 输出相关信息
- print_r( $ _sxe ); // 输出主要信息
- Reflection::export( new ReflectionClass( $ _sxe )); // 用发射查看详情
- echo $_ sxe ->asXML(); // 打印整个 XML
- 4. 读出 XML 数据
- $_ sxe = simplexml_load_file( "test.xml" );
- // 读取一级节点的值,比如 version 标签
- echo $_ sxe ->version;
- // 如果有多个,可以设置它的数字下标
- echo $_ sxe ->version[ 2 ];
- // 如果想要全部打印出来,可以用遍历
- foreach ( $_ sxe ->version as $_version ) {
- echo '[' . $_version . ']' ;
- }
- // 访问二级节点的 name
- echo $_ sxe ->user[ 1 ]->name;
- // 获取所有二级节点的 name 值
- foreach ( $_ sxe ->user as $_user ) {
- echo '[' . $_user ->name. ']' ;
- }
- // 获取二级节点的标签的属性
- echo $_ sxe ->user[ 1 ]-> author ->attributes();
- 5. 使用 XPath 来获取节点
- $_ sxe = simplexml_load_file( "test.xml" );
- // 使用 XPath 获取节点信息
- $_version = $_ sxe ->xpath( '/root/version' );
- echo $_version [ 1 ];
- // 遍历 version
- foreach ( $_version as $_v ) {
- echo '[' . $_v . ']' ;
- }
- // 访问二级节点
- $_user = $_ sxe ->xpath( '/root/user' );
- echo $_use r [ 2 ]->name;
- // 遍历二级节点
- foreach ( $_user as $_u ) {
- echo '[' . $_u ->name. ']' ;
- }
- // 访问属性
- echo $_user [ 1 ]->author->attributes();
很多情况下 , 手工生成标记要求从上到下生成文档 , 必须保证标签都是完整的 , 开始和结束标签。尽管借助于一些 PHP 函数或类可以有所改善,不过 PHP 还提供了一组更有帮助的内置对象和函数。文档对象模型( Document Object Model , DOM )提供了一个树状结构,能很容易创建和处理标签。
- 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' );
0 0
- PHP创建与解析XML
- PHP创建与解析XML
- php创建与解析xml
- PHP创建与解析XML
- xml解析与创建
- xml解析与创建
- minixml创建与解析XML
- xml的创建与解析
- Android 创建与解析XML
- java xml解析与创建
- PHP解析JSON与XML
- PHP与DOM解析XML
- PHP解析JSON与XML
- php dom方式解析 创建xml
- json与xml创建与解析
- 使用PHP DOM-XML创建和解析XML文件
- 使用PHP DOM-XML创建和解析XML文件
- php用array创建xml并且 post 发送 ,PHP解析
- PHP CURL CURLOPT_HTTPHEADER设置HOST
- 安装arm-linux-gcc
- Android LayoutParams修改的正确姿势
- jni ndk 学习笔记,带源码
- 10分钟掌握XML、JSON及其解析
- PHP创建与解析XML
- STM32的启动过程
- 机器学习与R笔记之线性回归
- Button的三种监听方法
- python 安装easy_install和pip
- Leetcode 110. Balanced Binary Tree (Easy) (cpp)
- This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE
- MFC中Picture控件,将位图转换成任意大小再放入控件中
- AssetsBundle 学习(一)