现在的位置: 首页 > 综合 > 正文

使用XML DOM生成XML

2013年08月21日 ⁄ 综合 ⁄ 共 4297字 ⁄ 字号 评论关闭

正如你所了解的,XML是个功能强大的新型数据结构,它可以让你把网页的内容和表现形式分开。尽管如此,目前,我们的文章大多仅介绍了直接生成XML标记得的法。我们在大多数时候,都是手工编写必需的标记和数据的。
  
  幸运的是,微软提供了XML DOM(XML文档对象模型),这是另外一种编写XML代码的方法。该对象库可以让你构建XML语法树,并提供了更有效的方法来创建XML文档。例如,你可用XML DOM搜集来自不同位置的数据,或者根据不同种类的数据源来创建XML文档。本文中,我们将介绍几种类型的库的功能,并且演示如何在ASP中使用它。
  
  了解XML文档对象模型
  XML DOM包含四个主要对象:XMLDOMDocument, XMLDOMNode,XMLDOMNodeList和XMLDOMNamedNodeMap。同任何其它对象模型一样,每个XML DOM对象有其自己的特性和方法。本文,我们将主要介绍XMLDOMDocument 和XMLDOMNode 对象。
  
  XMLDOMDocument对象
  XMLDOMDocument对象代表XML DOM层次中的顶层结点(请不要同XML文档中的根结点混淆)。它是建立和操纵XML结构的基础。为了创建XMLDOMDocument对象变量,请使用如下的CreateObject 命令:
  
   Set objXMLdoc = _
  
   CreateObject("Microsoft.XMLDOM")
  
  表A:列出了在创建了XMLDOMDocument的对象后,我们可以得到的一些特性和方法。
  
  方法 描述
  CreateAttribute
   创建新属性
  
  CreateCDATASection
   创建DATA 部分结点
  
  CreateComment
   创建注释结点
  
  CreateElement
   使用指定名称创建元素结点
  
  CreateEntityReference
   创建实体参考对象
  
  CreateNode
   创建结点
  
  CreateTextNode
   创建文本结点
  
  Load
   载入已有的 XML 文档
  
  Save
   保存XML 文档
  
  特性 描述
  PreserveWhiteSpace
   指示是否在XML文档中显示空格t
  
  ResolveExternals
   解析名域,DTD和外部实体索引
  
  ValidateOnParse
   指示解析器是否对文档进行合法性检查
  
  DocumentElement
   返回XML 文档的根结点
  
  
  
  
  设置运行选项
  正如你在表A中所看到的,只有创建了XMLDOMDocument 对象,你才可创建单个的XML结点。在做这个工作之前,你还可以设置XML文档的解析运行条件,如果你打算直接生成XML文档到浏览器时,就很有用处。
  
  运行选项可以让你设置异步下载,提供文档合法性检查和保留空格,以及解析外部索引。为了防止异步下载,可设置asynch特性为False。如果打算用一行新字符代替空格,可设置PreserveWhiteSpace 特性为True。 ResolveExternals特性可防止解析引擎解析外部实体索引,文档类型定义或者外部名域。

XMLDOMDocument 对象提供了创建结点或者XMLDOMNode的两种方法: CreateElement 和CreateNode。选择其中哪一种方法,取决于你需要结点提供信息量的多少。当你使用CreateElement 方法时,只要提供结点名称,如
  
  Set objXMLroot = objXMLdoc _
  
   .CreateElement("ORDER_STATUS")
  
  当使用CreateNode 方法时,你要指定结点类型,结点名称和相关名域。(XML名域可以让你择同一文档中用同一名称创建多个XML元素) 例如,如果要使用CreateNode方法,你可写出如下代码:
  
  Set objXMLroot = objXMLdoc _
  
   .createNode("element", _
  
   "ORDER_STATUS", "Space1")
  
  一旦创建了结点,你须把它添加进XML文档中。这就要用AppendChild 方法,例如,继续上面的例子,你可以写出:
  
  objXMLdoc.AppendChild(objXMLroot)
  
  该语句创建了XML根结点,请见图A在Internet Explorer 5.0中的例子。
  
  
  
  图A:用XML DOM 创建XML文档的根结点
  
  除了AppendChild方法外,XMLDOMNode 对象也具有其它三个控制XML结点的方法: ReplaceChild, RemoveChild和InsertBefore 

对结点的属性赋值
  一旦创建了结点,还要对其属性赋值,如独立的标识符,或者特性值。你要用到SetAttribute方法。该方法接收两个参数— 属性名和属性值。例如,下列代码创建了属性名SHIPPING_DATASOURCE 和属性值NORTH_ATLANTIC_SHIPPING:
  
  objXMLroot.SetAttribute _
  
   "SHIPPING_DATASOURCE", _
  
   "NORTH_ATLANTIC_SHIPPING"
  
  此时,我们生成了图B的XML文档。
  
  
  
  图B: SetAttributes方法创建了结点属性
  
  加入子结点
  要创建子结点,你可以使用我们前面介绍的CreateElement或者 CreateNode 方法,然后把它们添加到合适的父母结点中。例如,假设,我们要创建称为PUBLISHER_DISCLAIMER的XML结点。为了做到这一点,我们把该结点附加到文档的根结点中,代码如下:
  
  Set objXMLChildTestNode = objXMLdoc _
  
   .createNode("element", _
  
   "PUBLISHER_DISCLAIMER", "")
  
  
  
  objXMLdoc.DocumentElement _
  
   .appendChild (objXMLChildTestNode
  
  
  
  )
  
  
  注意:我们使用了XMLDOMDocument的 DocumentElement 特性来把新结点添加到XML文档的根结点中,请见图C。
  
  
  
  图C:要添加子结点,你只需把它们添加到父母结点中。
  
  给结点赋值
  一旦创建完所有的结点,你将需要给它们赋值。那是XML最关键的步骤。要做到这点,你同平常一样,创建一个结点,然后对该结点的TEXT属性赋值。例如,下列代码创建了称为PUBLISHED_DATE的XML结点,然后赋值如下:
  
  Set objPublishDate = objXMLdoc _
  
   .CreateNode("element", _
  
   "PUBLISHED_DATE", "")
  
  
  
  dShippedDate = FormatDateTime(Date, 2)
  
  objPublishDate.Text = dShippedDate
  
  
  
  objXMLChildTestNode.appendChild _
  
   (objPublishDate)
  
  
  结果请见图D。
  
  
  
  图D: 我们对把当前日期赋给PUBLISHED_DATE的Text属性,然后把该结点添加到PUBLISHER_DISCLAIMER元素中。
  
  我们目前已经介绍了若干XML DOM的基本知识,下面将介绍一下如何在ASP下使用XML DOM。 

在ASP下使用XML DOM
   要生成前面例子中的XML文档,我们可以用ASP来生成。我们将创建一个简单的ASP页,让你只需点击按钮,就可创建XML文档。为了完成这件事情,我们用了带有Windows脚本构件的ASP网页,由它来生成XML。我们将用Windows Script Component Wizard来生成初始代码。(如果你没有wizard,可到微软的脚本栏目中去寻找。)
  
  创建脚本组件
  开始时运行Windows Script Component Wizard。在第一个窗口中,输入XMLDom 作为组件名称,然后单击Next。确信VBScript和支持Active Server Pages选项在第二个窗口中被选中,然后单击Next两次。在第四个窗口,输入CreateXML,作为我们的脚本对象的唯一方法。再单击Next 两次,最后再点击Finish。完成了这些事情后, wizard 就创建了组件,并把组件添加到你的桌面上。
  
  此时,我们获得了组件的基本结构,但它并不包含任何功能,所以还要添加功能。要做到这点,双击位于桌面的XMLDom 的快捷键。完成后,Windows 在记事本上显示出初始代码。注意组件本身是个XML文档。要添加CreateXML 代码,我们将创建一个子过程来代替函数。所以,删除下面的行
  
  function CreateXML()
  
   CreateXML = "Temporary Value"
  
  end function
  
  
  在该处输入列表A中的代码 

 

构造ASP网页
  
  
  为了创建ASP网页,打开你所熟悉的HTML 编辑器,输入列表B中的代码。确保 Window.Navigate行指向合适的文件夹。要了解其是如何工作的,在Internet Explorer中打开该页。一旦打开后,就会出现一个信息,告诉你XML已经创建了成功,并出现一个 Show 按钮,点击该按钮,IE显示出图E中的XML文档。
  
  
  
  图E:我们使用了几种不同的XML DOM 方法来创建完整的XML 文档
  
  XML DOM 库中更多内容
  
  正如你在样本代码中所见,XML DOM 包含了比我们此处所介绍的更多的方法和属性。要查找完整的XML文档对象模型,请访问有关微软网站。同时,如何你想了解XML DOM以及XSL和ASP的高级用法的例子,请访问www.i3solutions.com/onlinedemos.asp。
  
  结论
  XML正在迅猛发展,同以往的以文本为中心的网页相比,XML的数据模型结构提供了更多的功能, XML文档对象模型通过编程化的方式,可以为你创建XML文档。本文中,我们对XML DOM作了入门性的介绍,并且演示了如何在Active Server Pages中使用XML DOM。 

 

抱歉!评论已关闭.