用ColdFusion MX创建定制XML函数

ZDNet软件频道 时间:2003-09-09 作者:ZDNet China |  我要评论()
本文关键词:
通过介绍使用迭代函数来解析XML文档的相关概念,我将说明如何创建一个定制函数集来操作XML元素。我还会将其包装成一个ColdFusion组件,以便于更加容易使用和移植。
本文译自Builder.com,未经许可请勿转载前面我谈到了如何创建一个函数对一个特殊类型的XML文件进行迭代,并在一个数组中返回XML数据。这个函数工作正常,但是我认为这个函数还可以做得更加通用,以使得其可以处理任何类型的XML。

通过介绍使用迭代函数来解析XML文档的相关概念,我将说明如何创建一个定制函数集来操作XML元素。我还会将其包装成一个ColdFusion组件,以便于更加容易使用和移植。

定制函数集概要
 

ColdFusion MX具有一些预定义的XML函数,但是它们在某种程度上来说是有限度的。它们主要用来完成一些功能,比如用来创建一个XML对象或者插入新元素到现存的XML对象中。为了创建一个更加通用的XML迭代函数,我将需要一系列定制函数以处理主要的工作。这样做的主要好处在于定制函数可以在迭代函数以外单独使用,从而给你的工具箱提供一些有用的附加XML函数。


以下是一个我认为有用的定制XML函数列表,并对它们的功能做了描述:

  • getRootElement()—对于给定的XML完全对象,返回其根元素
  • hasXMLChildren()—如果传递的XML元素具有子元素,则返回ture
  • getXMLChildCount()—返回给定元素的子元素个数
  • getXMLChildElement()—返回给定元素的指定子元素
  • hasXMLAttributes()—如果传送的元素具有属性,则返回true
  • getXMLAttributes()—返回传递的元素的属性集合
  • getXMLAttributeValue()—返回传递属性结构的指定属性
  • hasXMLElementName()—如果传送的元素包含一个指定名称的属性,则返回true
  • getXMLElementName()—从传送的XML元素返回指定元素
  • hasXMLElementText()—如果传送的元素包含XML文本,则返回true
  • getXMLElementText()—返回传送元素的XML文本


有了上面这些函数集合,创建一个通用的XML跌代函数就相对简单多了。最终我们要创建一个名叫recurseXMLObject()的函数。为了使用它,你要传入一个ColdFusion XML对象,他会返回一个包含了XML数据的数组。

每个数组元素包含elementNamenodeDepth两个键。nodeDepth键代表了在原来XML中的元素位置,这样在你想显示数据的时候,便于恢复它。

一个数组元素也可以包含一个成为属性集的结构,它对应这XML元素的特定属性。另一个可能的结构键是elementText数组,当XML元素包含文本的时候它用来表示XML文本。XML文本是XML标签集合中含有的数据。

我还想到添加一个选项不返回XML数据中的所有内容。有些时候XML数据可能很大,而你可能只是想处理某个名称的XML元素。recurseXMLObject()函数有一个可选的参数:一个用逗号分开的元素列表名称。换句话说,不和过滤列表中的值匹配的元素将被结果数组排除。

最后,所有这些函数都被封装成一个称之为的xmlUtils.cfc ColdFusion组件,你可以在列表A中看到最终的代码。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134