通过介绍使用迭代函数来解析XML文档的相关概念,我将说明如何创建一个定制函数集来操作XML元素。我还会将其包装成一个ColdFusion组件,以便于更加容易使用和移植。
ColdFusion MX具有一些预定义的XML函数,但是它们在某种程度上来说是有限度的。它们主要用来完成一些功能,比如用来创建一个XML对象或者插入新元素到现存的XML对象中。为了创建一个更加通用的XML迭代函数,我将需要一系列定制函数以处理主要的工作。这样做的主要好处在于定制函数可以在迭代函数以外单独使用,从而给你的工具箱提供一些有用的附加XML函数。
以下是一个我认为有用的定制XML函数列表,并对它们的功能做了描述:
有了上面这些函数集合,创建一个通用的XML跌代函数就相对简单多了。最终我们要创建一个名叫recurseXMLObject()的函数。为了使用它,你要传入一个ColdFusion XML对象,他会返回一个包含了XML数据的数组。
每个数组元素包含elementName和 nodeDepth两个键。nodeDepth键代表了在原来XML中的元素位置,这样在你想显示数据的时候,便于恢复它。
一个数组元素也可以包含一个成为属性集的结构,它对应这XML元素的特定属性。另一个可能的结构键是elementText数组,当XML元素包含文本的时候它用来表示XML文本。XML文本是XML标签集合中含有的数据。
我还想到添加一个选项不返回XML数据中的所有内容。有些时候XML数据可能很大,而你可能只是想处理某个名称的XML元素。recurseXMLObject()函数有一个可选的参数:一个用逗号分开的元素列表名称。换句话说,不和过滤列表中的值匹配的元素将被结果数组排除。
最后,所有这些函数都被封装成一个称之为的xmlUtils.cfc 的ColdFusion组件,你可以在列表A中看到最终的代码。