用 DomIt! 做简单的 XML 处理工作
2008-08-15 11:03
246 查看
有一次我拿到了个处理 XML 文件的活儿。这个 XML 文件是用来跟 Flash mp3 播放器做通信使用的,包含了音乐的地址、描述等。我需要做的仅仅是让管理员可以通过一个表单完成添加、删除音乐项并更新 XML 文件。听起来很简单吧?但我却在做删除功能时遇到了麻烦。在我花了无数时间抓耳挠腮想办法、搜索、翻阅官方 PHP 文档里关于 DOM XML 的内容时,DomIt! 及时地出现了(其实是我及时地找到了)。DomIt! 非常的强大、易用(至少拿来做简单的处理工作时)、兼容 PHP4,并且在愿意细读它的源代码时帮助你快速地学好 DOM XML。
当时需要的 XML 文件为如下格式:
当然,这个 XML 文件在我接这活儿的时候已经预先给了。但我想使用 DomIt! 创建这样的一个文件作为本系列的第一部分内容,同时也是为了展示 DomIt! 的强大和易用。
首先我们要做的是调用 DomIt! 的库文件(到这里,下载、解压 DomIt! 库并将所有的文件放入与下面将要创建的程序文件相同的目录),并创建一个 DomIt! 文档实例:
注意“&”符号是用来兼容 PHP4 的。
这样我们就准备好一个实例可以按需使用了。看到 XML 文件内容中的第一行了么?没错,我们要添加 XML 的文件声明:
在这我们可以看到声明信息也被当作是一个子节点做处理,也算是合理的定义。但这里我们可以发现 createProcessingInstruction() 方法存在一个明显的缺点——只有两个声明参数(通常我们可能还会定义编码之类的 XML 声明信息)。幸运的是我们使用的是一个开源的库,也就是说我们可以轻易地将它修改定制以满足要求。如果你实在需要帮助来修改这个特定的方法以添加足够的 XML 文件声明信息(如编码等),我将在本系列的最后一篇中加以介绍。
让我们回到正题。完成 XML 文件声明部分后,我们在 XML 文件内容中看到的是“audio”标签。它是这个 XML 文件中的根元素(根节点)。让我们来创建这部分:
你不需要担心标签关闭的问题,DomIt! 已经完全替你做好了。利用类似的方法,我们将建立“audio”的子节点——“file”元素;在“file”元素内,还包含了几个姊妹元素“track”、“caption”和“record”及它们的文字内容。既然创建它们时都要用到一个主要的方法 appendChild(),我们可以归纳到一起说:
就像之前说的,核心部分是 appendChild() 方法。在不同的实例上调用它就可以起到不同的作用(这就是面向对象)。如果你用 appendChild() 将“track”元素添加进“audio”,那“file”和“track”就变成姊妹节点了。
完成创建所有节点的工作后,我们需要将这些内容添加进“audio”元素,或许你还想将最后的内容输出到屏幕上查看、以及保存到真正的 XML 文件中去:
然后在屏幕上(浏览器中),你可以看到:
与给我的文件内容一模一样。这就是《用 DomIt! 做简单的 XML 处理工作》第一部分的结尾。下一篇,我将谈谈如何修改我们刚刚创建的 XML 文件,包括对内容的添加、删除和编辑。
哦,我还忘了给你们一个 DomIt! 明显的下载链接(我知道可能你们很多人已经 Google 出来了):http://sourceforge.net/projects/domit-xmlparser/
到这里下载一份 DomIt!,并且可以在下一篇出炉前读读它的文档。
当时需要的 XML 文件为如下格式:
<?xmlversion="1.0"?> <audio> <file> <track>音乐文件位置</track> <caption>音乐文件标题</caption> <record>音乐录制信息</record> </file> </audio>
当然,这个 XML 文件在我接这活儿的时候已经预先给了。但我想使用 DomIt! 创建这样的一个文件作为本系列的第一部分内容,同时也是为了展示 DomIt! 的强大和易用。
首先我们要做的是调用 DomIt! 的库文件(到这里,下载、解压 DomIt! 库并将所有的文件放入与下面将要创建的程序文件相同的目录),并创建一个 DomIt! 文档实例:
require_once('xml_domit_include.php'); $xmlDoc=&newDOMIT_Document();// 文档实例
注意“&”符号是用来兼容 PHP4 的。
这样我们就准备好一个实例可以按需使用了。看到 XML 文件内容中的第一行了么?没错,我们要添加 XML 的文件声明:
$xmlDecl=&$xmlDoc->createProcessingInstruction('xml','version="1.0"'); $xmlDoc->appendChild($xmlDecl);
在这我们可以看到声明信息也被当作是一个子节点做处理,也算是合理的定义。但这里我们可以发现 createProcessingInstruction() 方法存在一个明显的缺点——只有两个声明参数(通常我们可能还会定义编码之类的 XML 声明信息)。幸运的是我们使用的是一个开源的库,也就是说我们可以轻易地将它修改定制以满足要求。如果你实在需要帮助来修改这个特定的方法以添加足够的 XML 文件声明信息(如编码等),我将在本系列的最后一篇中加以介绍。
让我们回到正题。完成 XML 文件声明部分后,我们在 XML 文件内容中看到的是“audio”标签。它是这个 XML 文件中的根元素(根节点)。让我们来创建这部分:
$rootElement=&$xmlDoc->createElement('audio'); $xmlDoc->appendChild($rootElement);
你不需要担心标签关闭的问题,DomIt! 已经完全替你做好了。利用类似的方法,我们将建立“audio”的子节点——“file”元素;在“file”元素内,还包含了几个姊妹元素“track”、“caption”和“record”及它们的文字内容。既然创建它们时都要用到一个主要的方法 appendChild(),我们可以归纳到一起说:
// "file" 元素 $fileElement=&$xmlDoc->createElement('file'); // "track" 元素 $trackElement=&$xmlDoc->createElement('track'); // 增加"track"元素的文本内容 $trackElement->appendChild($xmlDoc->createTextNode('音乐文件位置')); // 添加到"file"元素中去 $fileElement->appendChild($trackElement); // "caption" 元素,其他同"track" $captionElement=&$xmlDoc->createElement('caption'); $captionElement->appendChild($xmlDoc->createTextNode('音乐文件标题')); $fileElement->appendChild($captionElement); // "record" 元素,其他同"track" $recordElement=&$xmlDoc->createElement('record'); $recordElement->appendChild($xmlDoc->createTextNode('音乐录制信息')); $fileElement->appendChild($recordElement);
就像之前说的,核心部分是 appendChild() 方法。在不同的实例上调用它就可以起到不同的作用(这就是面向对象)。如果你用 appendChild() 将“track”元素添加进“audio”,那“file”和“track”就变成姊妹节点了。
完成创建所有节点的工作后,我们需要将这些内容添加进“audio”元素,或许你还想将最后的内容输出到屏幕上查看、以及保存到真正的 XML 文件中去:
// 添加所有"file"元素里的内容到"audio"里 $rootElement->appendChild($fileElement); // 在屏幕上(网页)打印出来 echo$xmlDoc->toNormalizedString(true); // 将文档实例保存进一个真正的 XML 文件中 $xmlDoc->saveXML('audio.xml',true);
然后在屏幕上(浏览器中),你可以看到:
<?xmlversion="1.0"?> <audio> <file> <track>音乐文件位置</track> <caption>音乐文件标题</caption> <record>音乐录制信息</record> </file> </audio>
与给我的文件内容一模一样。这就是《用 DomIt! 做简单的 XML 处理工作》第一部分的结尾。下一篇,我将谈谈如何修改我们刚刚创建的 XML 文件,包括对内容的添加、删除和编辑。
哦,我还忘了给你们一个 DomIt! 明显的下载链接(我知道可能你们很多人已经 Google 出来了):http://sourceforge.net/projects/domit-xmlparser/
到这里下载一份 DomIt!,并且可以在下一篇出炉前读读它的文档。
相关文章推荐
- 用 DomIt! XML 处理工作
- 每天学一点flash(63) 读取xml后的简单分页处理
- 读取xml的简单分页处理
- 在Ruby中处理XML和XSLT以及XPath的简单教程
- 简单处理IP XML数据
- PHP 简单处理 XML
- 简单处理IP XML数据
- php简单处理XML数据的方法示例
- 让客户端把ASP文件以XML的方式来处理最简单的实现方法.
- 写了一个简单的处理类似xml文件的类,请大家指正【原创】
- 串的简单处理 在实际的开发工作中,对字符串的处理是最常见的编程任务。 本题目即是要求程序对用户输入的串进行处理。
- C#xml的一些简单处理0.0增删改查及放入listview
- SQL 处理简单的 Xml
- PHP 简单处理 XML
- [ActionScript 3.0] 处理xml内容换行时行间距较大问题的一种简单方法
- 简单的异常处理--生成xml异常日志
- Ajax几个简单的案例(ajax_用户唯一验证、ajax_返回xml数据的处理(包括分页处理)
- ElementTree处理简单XML
- 简单的xml处理类.
- 每天学一点flash(63) 读取xml后的简单分页处理