首页 / XML / php操作xml详解_PHP教程
php操作xml详解_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php操作xml详解_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含29398字,纯文字阅读大概需要42分钟。
内容图文
![php操作xml详解_PHP教程](/upload/InfoBanner/zyjiaocheng/175/9c9c7e36c0ff439ebfba78a5fcf019d2.jpg)
”; } ?> 运行结果如下所示。 production support testing center //读取 XML文件 //循环读取 XML数据中的每一个 depart标签 //输出其中的 name属性 也可以使用方括号“ []”来直接读取 XML数据中指定的标签。以下代码输出了上面 XML数据中的第一个“depart”标签的“name”属性。 代码如下: depart->name[0]; //输出节点 ?> 运行结果如下所示。 production support 对于一个标签下的所有子标签,SimpleXML组件提供了 children方法进行读取。例如,对于上面的 XML数据中的“ depart”标签,其下包括两个子标签:“ name”和“employees”。以下代码实现了对第一个“depart”标签下的子标签的读取。 代码如下: depart->children() as $depart) //循环读取 depart标签下的子标签 { var_dump($depart); //输出标签的 XML数据 } ?> 运行结果如下所示。 代码如下: object(SimpleXMLElement)#3 (1) { [0]=> string(18) “production support” } object(SimpleXMLElement)#5 (1) { ["employee"]=> array(2) { [0]=> object(SimpleXMLElement)#3 (6) { ["serial_no"]=> string(6) “100001″ ["name"]=> string(5) “Simon” ["age"]=> string(2) “24″ ["birthday"]=> string(10) “1982-11-06″ ["salary"]=> string(7) “5000.00″ ["bonus"]=> string(7) “1000.00″ } [1]=> object(SimpleXMLElement)#6 (6) { ["serial_no"]=> string(6) “100002″ ["name"]=> string(6) “Elaine” ["age"]=> string(2) “24″ ["birthday"]=> string(10) “1982-01-01″ ["salary"]=> string(7) “6000.00″ ["bonus"]=> string(7) “2000.00″ } } } 可以看出,使用 children方法后,所有的子标签均被当作一个新的 XML文件进行处理。 3.基于 XML数据路径的查询 SimpleXML组件提供了一种基于 XML数据路径的查询方法。 XML数据路径即从 XML的根到某一个标签所经过的全部标签。这种路径使用斜线“ /”隔开标签名。例如,对于上面的 XML数据,要查询所有的标签“name”中的值,从根开始要经过 departs、depart、employees和 employee标签,则其路径 为“/departs/depart/employees/employee/name”。 SimpleXML组件使用 xpath方法来解析路径,其语法格式如下所示。 xpath(string path) 其中的 path为路径。该方法返回了一个包含有所有要查询标签值的数组。以下代码查询了上面 XML数据中的所有 name标签。 代码如下: xpath('/departs/depart/employees/employee/name'); //定义节点 var_dump($result); //输出节点 ?> 运行结果如下所示。 代码如下: array(3) { [0]=> object(SimpleXMLElement)#2 (1) { [0]=> string(5) “Simon” } [1]=> object(SimpleXMLElement)#3 (1) { [0]=> string(6) “Elaine” } [2]=> object(SimpleXMLElement)#4 (1) { [0]=> string(5) “Helen” } } 可以看出,所有的 name标签均被查询出来。 2.3 XML数据的修改 对于 XML数据的修改与读取 XML数据中的标签方法类似。即通过直接修改 SimpleXML对象中的标签的值来实现。以下代码实现了对上面 XML数据中第一个“ depart”标签的“ name”子标签的修改。 代码如下: depart->name[0] = “Human Resource”; //修改节点 ?> 修改后,并不会对 XML文件有任何影响。但是,在程序中,对于 SimpleXML对象的读取将使用修改过的值。 2.4 标准化 XML数据 SimpleXML还提供了一种标准化 XML数据的方法 asXML。asXML方法可以有效的将 SimpleXML对象中的内容按照 XML 1.0标准进行重新编排并以字符串的数据类型返回。以下代码实现了对上面 XML数据的标准化。 代码如下: asXML(); //标准化 XML数据 ?> 2.5 XML数据的存储 将 SimpleXML对象中的 XML数据存储到一个 XML文件的方法非常简单,即将 asXML方法的返回结果输出到一个文件中即可。以下代码首先将 XML文件中的 depart name进行了修改,然后将修改过的 XML数据输出到另一个 XML文件。 代码如下: asXML(); //标准化 XML数据 $fp = fopen(”newxml.xml”, “w”); //打开要写入 XML数据的文件 fwrite($fp, $newxml); //写入 XML数据 fclose($fp); //关闭文件 ?> 代码运行后,可以看到在 newxml.xml文件中的 XML数据如下所示。 可以看出,对于 XML文件的修改已经保存到输出文件中了。 3 XML文档的动态创建 在实际应用中,时而会需要动态生成 XML文档的操作。前面介绍的 SimpleXML组件并不提供创建 XML文档的方法。因此,如果需要动态创建 XML文档,往往使用 DOM组件进行创建。 DOM是文档对象模型 Document Object Model的缩写, DOM组件提供了对 XML文档的树型解析模式。以下代码使用 DOM组件创建了一个 XML文档。 代码如下: createElement('departs'); $dom->appendChild($departs); //在 departs标签下创建 depart子标签 $depart = $dom->createElement('depart'); $departs->appendChild($depart); //在 depart标签下创建 employees子标签 $employees = $dom->createElement('employees'); $depart->appendChild($employees); //在 employees标签下创建 employee子标签 $employee = $dom->createElement('employee'); $employees->appendChild($employee); //在 employee标签下创建 serial_no子标签 $serial_no = $dom->createElement('serial_no'); $employee->appendChild($serial_no); //为 serial_no标签添加值节点 100001 $serial_no_value = $dom->createTextNode('100001′); $serial_no->appendChild($serial_no_value); //输出 XML数据 echo $dom->saveXML(); ?> 输出结果如下所示。
”; } else if($e->nodeType == XML_ELEMENT_NODE) //如果子节点为节点对象,则调用函数处理 { read_child($e); } } } ?> 运行结果如下所示。 代码如下: 引用 production support 100001 Simon 24 1982-11-06 5000.00 1000.00 100002 Elaine 24 1982-01-01 6000.00 2000.00 testing center 110001 Helen 23 1983-07-21 5000.00 1000.00 上面的例子使用了递归的方式对 XML数据进行了处理,实现了输出 XML数据中的所有文本型标签的功能。 4 XML应用实例——留言本 前面介绍了 XML的基本操作,本节将以设计一个 XML留言本为例来详细说明在实际应用中如何实现 PHP与 XML数据的交互操作。 4.1 XML文件结构设计 XML文件用于存储 XML数据,也就是留言本中的留言。这里,对于每条留言,在 XML数据中主要包括三项内容:留言标题、留言者姓名、留言内容。因此,将 XML文件的格式设计如下。 代码如下:
发表新的留言
对于用来处理用户输入的 PHP脚本,其基本逻辑是首先创建一个 DOM对象,然后读取 XML文件中的 XML数据,接下来在 XML对象上创建新的节点并将用户的输入储存起来,最后将 XML数据输出到原来的 XML文件中。具体实现代码如下所示。 代码如下: load('DB/guestbook.xml'); //读取 XML数据 $threads = $guestbook->documentElement; //获得 XML结构的根 //创建一个新 thread节点 $thread = $guestbook->createElement('thread'); $threads->appendChild($thread); //在新的 thread节点上创建 title标签 $title = $guestbook->createElement('title'); $title->appendChild($guestbook->createTextNode($_POST['title'])); $thread->appendChild($title); //在新的 thread节点上创建 author标签 $author = $guestbook->createElement('author'); $author->appendChild($guestbook->createTextNode($_POST['author'])); $thread->appendChild($author); //在新的 thread节点上创建 content标签 $content = $guestbook->createElement('content'); $content->appendChild($guestbook->createTextNode($_POST['content'])); $thread->appendChild($content); //将 XML数据写入文件 $fp = fopen(”DB/guestbook.xml”, “w”); if(fwrite($fp, $guestbook->saveXML())) echo “留言提交成功”; else echo “留言提交失败”; fclose($fp); ?> 在浏览器中运行上述 HTML文件并填写适当的留言内容,如图 2所示。 图 2 发表新留言界面 单击【Submit】按钮后,XML文件中的内容如下所示。 可以看到 XML文件中已经将留言存储起来了。 4.3 显示页面的编写 显示页面可以使用前面介绍的 SimpleXML组件很容易的实现,具体实现代码如下所示。 代码如下: thread as $th) //循环读取 XML数据中的每一个 thread标签 { echo “标题:”.$th->title.””; echo “作者:”.$th->author.”
”; echo “内容:
”.$th->content.””; echo “
”; } ?> 在浏览器中查看运行结果如图 3所示。 您可能感兴趣的文章: PHP读取XML值的代码(推荐) php读取xml实例代码 用PHP编写和读取XML的几种方式 PHP中的生成XML文件的4种方法分享 用PHP读取和编写XML DOM的实现代码 PHP中simplexml_load_string函数使用说明 php xml 入门学习资料 PHP操作XML作为数据库的类 php生成xml简单实例代码 php与XML、XSLT、Mysql的结合运用实现代码 PHP 生成的XML以FLASH获取为乱码终极解决 PHP读取xml方法介绍 详细出处参考:http://www.gxlcms.com/article/23912.htmXML是一种流行的半结构化文件格式,以一种类似数据库的格式存储数据。在实际应用中,一些简单的、安全性较低的数据往往使用 XML文件的格式进行存储。这样做的好处一方面可以通过减少与数据库的交互性操作提高读取效率,另一方面可以有效利用 XML的优越性降低程序的编写难度。 PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序。本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍。 1 XML简介 XML是“可扩展性标识语言(eXtensible Markup Language)”的缩写,是一种类似于 HTML的标记性语言。但是与 HTML不同,XML主要用于描述数据和存放数据,而 HTML主要用于显示数据。 XML是一种“元标记”语言,开发者可以根据自己的需要创建标记的名称。例如,下面的 XML代码可以用来描述一条留言。 代码如下:
”; } ?> 运行结果如下所示。 production support testing center //读取 XML文件 //循环读取 XML数据中的每一个 depart标签 //输出其中的 name属性 也可以使用方括号“ []”来直接读取 XML数据中指定的标签。以下代码输出了上面 XML数据中的第一个“depart”标签的“name”属性。 代码如下: depart->name[0]; //输出节点 ?> 运行结果如下所示。 production support 对于一个标签下的所有子标签,SimpleXML组件提供了 children方法进行读取。例如,对于上面的 XML数据中的“ depart”标签,其下包括两个子标签:“ name”和“employees”。以下代码实现了对第一个“depart”标签下的子标签的读取。 代码如下: depart->children() as $depart) //循环读取 depart标签下的子标签 { var_dump($depart); //输出标签的 XML数据 } ?> 运行结果如下所示。 代码如下: object(SimpleXMLElement)#3 (1) { [0]=> string(18) “production support” } object(SimpleXMLElement)#5 (1) { ["employee"]=> array(2) { [0]=> object(SimpleXMLElement)#3 (6) { ["serial_no"]=> string(6) “100001″ ["name"]=> string(5) “Simon” ["age"]=> string(2) “24″ ["birthday"]=> string(10) “1982-11-06″ ["salary"]=> string(7) “5000.00″ ["bonus"]=> string(7) “1000.00″ } [1]=> object(SimpleXMLElement)#6 (6) { ["serial_no"]=> string(6) “100002″ ["name"]=> string(6) “Elaine” ["age"]=> string(2) “24″ ["birthday"]=> string(10) “1982-01-01″ ["salary"]=> string(7) “6000.00″ ["bonus"]=> string(7) “2000.00″ } } } 可以看出,使用 children方法后,所有的子标签均被当作一个新的 XML文件进行处理。 3.基于 XML数据路径的查询 SimpleXML组件提供了一种基于 XML数据路径的查询方法。 XML数据路径即从 XML的根到某一个标签所经过的全部标签。这种路径使用斜线“ /”隔开标签名。例如,对于上面的 XML数据,要查询所有的标签“name”中的值,从根开始要经过 departs、depart、employees和 employee标签,则其路径 为“/departs/depart/employees/employee/name”。 SimpleXML组件使用 xpath方法来解析路径,其语法格式如下所示。 xpath(string path) 其中的 path为路径。该方法返回了一个包含有所有要查询标签值的数组。以下代码查询了上面 XML数据中的所有 name标签。 代码如下: xpath('/departs/depart/employees/employee/name'); //定义节点 var_dump($result); //输出节点 ?> 运行结果如下所示。 代码如下: array(3) { [0]=> object(SimpleXMLElement)#2 (1) { [0]=> string(5) “Simon” } [1]=> object(SimpleXMLElement)#3 (1) { [0]=> string(6) “Elaine” } [2]=> object(SimpleXMLElement)#4 (1) { [0]=> string(5) “Helen” } } 可以看出,所有的 name标签均被查询出来。 2.3 XML数据的修改 对于 XML数据的修改与读取 XML数据中的标签方法类似。即通过直接修改 SimpleXML对象中的标签的值来实现。以下代码实现了对上面 XML数据中第一个“ depart”标签的“ name”子标签的修改。 代码如下: depart->name[0] = “Human Resource”; //修改节点 ?> 修改后,并不会对 XML文件有任何影响。但是,在程序中,对于 SimpleXML对象的读取将使用修改过的值。 2.4 标准化 XML数据 SimpleXML还提供了一种标准化 XML数据的方法 asXML。asXML方法可以有效的将 SimpleXML对象中的内容按照 XML 1.0标准进行重新编排并以字符串的数据类型返回。以下代码实现了对上面 XML数据的标准化。 代码如下: asXML(); //标准化 XML数据 ?> 2.5 XML数据的存储 将 SimpleXML对象中的 XML数据存储到一个 XML文件的方法非常简单,即将 asXML方法的返回结果输出到一个文件中即可。以下代码首先将 XML文件中的 depart name进行了修改,然后将修改过的 XML数据输出到另一个 XML文件。 代码如下: asXML(); //标准化 XML数据 $fp = fopen(”newxml.xml”, “w”); //打开要写入 XML数据的文件 fwrite($fp, $newxml); //写入 XML数据 fclose($fp); //关闭文件 ?> 代码运行后,可以看到在 newxml.xml文件中的 XML数据如下所示。 可以看出,对于 XML文件的修改已经保存到输出文件中了。 3 XML文档的动态创建 在实际应用中,时而会需要动态生成 XML文档的操作。前面介绍的 SimpleXML组件并不提供创建 XML文档的方法。因此,如果需要动态创建 XML文档,往往使用 DOM组件进行创建。 DOM是文档对象模型 Document Object Model的缩写, DOM组件提供了对 XML文档的树型解析模式。以下代码使用 DOM组件创建了一个 XML文档。 代码如下: createElement('departs'); $dom->appendChild($departs); //在 departs标签下创建 depart子标签 $depart = $dom->createElement('depart'); $departs->appendChild($depart); //在 depart标签下创建 employees子标签 $employees = $dom->createElement('employees'); $depart->appendChild($employees); //在 employees标签下创建 employee子标签 $employee = $dom->createElement('employee'); $employees->appendChild($employee); //在 employee标签下创建 serial_no子标签 $serial_no = $dom->createElement('serial_no'); $employee->appendChild($serial_no); //为 serial_no标签添加值节点 100001 $serial_no_value = $dom->createTextNode('100001′); $serial_no->appendChild($serial_no_value); //输出 XML数据 echo $dom->saveXML(); ?> 输出结果如下所示。
”; } else if($e->nodeType == XML_ELEMENT_NODE) //如果子节点为节点对象,则调用函数处理 { read_child($e); } } } ?> 运行结果如下所示。 代码如下: 引用 production support 100001 Simon 24 1982-11-06 5000.00 1000.00 100002 Elaine 24 1982-01-01 6000.00 2000.00 testing center 110001 Helen 23 1983-07-21 5000.00 1000.00 上面的例子使用了递归的方式对 XML数据进行了处理,实现了输出 XML数据中的所有文本型标签的功能。 4 XML应用实例——留言本 前面介绍了 XML的基本操作,本节将以设计一个 XML留言本为例来详细说明在实际应用中如何实现 PHP与 XML数据的交互操作。 4.1 XML文件结构设计 XML文件用于存储 XML数据,也就是留言本中的留言。这里,对于每条留言,在 XML数据中主要包括三项内容:留言标题、留言者姓名、留言内容。因此,将 XML文件的格式设计如下。 代码如下:
发表新的留言
对于用来处理用户输入的 PHP脚本,其基本逻辑是首先创建一个 DOM对象,然后读取 XML文件中的 XML数据,接下来在 XML对象上创建新的节点并将用户的输入储存起来,最后将 XML数据输出到原来的 XML文件中。具体实现代码如下所示。 代码如下: load('DB/guestbook.xml'); //读取 XML数据 $threads = $guestbook->documentElement; //获得 XML结构的根 //创建一个新 thread节点 $thread = $guestbook->createElement('thread'); $threads->appendChild($thread); //在新的 thread节点上创建 title标签 $title = $guestbook->createElement('title'); $title->appendChild($guestbook->createTextNode($_POST['title'])); $thread->appendChild($title); //在新的 thread节点上创建 author标签 $author = $guestbook->createElement('author'); $author->appendChild($guestbook->createTextNode($_POST['author'])); $thread->appendChild($author); //在新的 thread节点上创建 content标签 $content = $guestbook->createElement('content'); $content->appendChild($guestbook->createTextNode($_POST['content'])); $thread->appendChild($content); //将 XML数据写入文件 $fp = fopen(”DB/guestbook.xml”, “w”); if(fwrite($fp, $guestbook->saveXML())) echo “留言提交成功”; else echo “留言提交失败”; fclose($fp); ?> 在浏览器中运行上述 HTML文件并填写适当的留言内容,如图 2所示。 图 2 发表新留言界面 单击【Submit】按钮后,XML文件中的内容如下所示。 可以看到 XML文件中已经将留言存储起来了。 4.3 显示页面的编写 显示页面可以使用前面介绍的 SimpleXML组件很容易的实现,具体实现代码如下所示。 代码如下: thread as $th) //循环读取 XML数据中的每一个 thread标签 { echo “标题:”.$th->title.””; echo “作者:”.$th->author.”
”; echo “内容:
”.$th->content.””; echo “
”; } ?> 在浏览器中查看运行结果如图 3所示。 您可能感兴趣的文章: PHP读取XML值的代码(推荐) php读取xml实例代码 用PHP编写和读取XML的几种方式 PHP中的生成XML文件的4种方法分享 用PHP读取和编写XML DOM的实现代码 PHP中simplexml_load_string函数使用说明 php xml 入门学习资料 PHP操作XML作为数据库的类 php生成xml简单实例代码 php与XML、XSLT、Mysql的结合运用实现代码 PHP 生成的XML以FLASH获取为乱码终极解决 PHP读取xml方法介绍
http://www.bkjia.com/PHPjc/477139.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477139.htmlTechArticleXML是一种流行的半结构化文件格式,以一种类似数据库的格式存储数据。在实际应用中,一些简单的、安全性较低的数据往往使用 XML文件的...
内容总结
以上是互联网集市为您收集整理的php操作xml详解_PHP教程全部内容,希望文章能够帮你解决php操作xml详解_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。