用 DomIt! 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/

posted @ 2010-01-20 18:51  Wamei  阅读(196)  评论(0编辑  收藏  举报