%'示例:'SetobjXMLdoc=CreateObject(Microsoft.XMLDOM)'Setworld=objXMLdoc.createElement(世界)'objXMLdoc.appendChild(world)'Sethello=objXMLdoc.createNode(element,你好,)'hello.Text=hello,world'objXMLdoc.documentElement.appendChild(hello)'objXMLdoc.SaveServer.MapPath(xml/bcastr.xml)'SetobjXMLdoc=Nothingxmlfile=server.mappath(xml/test1.xml)Setfso=CreateObject(Scripting.FileSystemObject)SetMyFile=fso.CreateTextFile(xmlfile,True)MyFile.WriteLine(?xmlversion=1.0encoding=utf-8?)MyFile.WriteLine(bcasterautoPlayTime=3)MyFile.WriteLine(itemitem_url=images/01.jpg/item)MyFile.WriteLine(/bcaster)MyFile.Close%一、必须弄清楚最终需要的是什么我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实实在在的XML文件。也可以为asp文档.他们都是XML数据的体现,为了实现XML数据的动态,所以需要使用到动态编程语言,比如ASP来实现生成它。二、如何生成动态的XML文档如果是生成XML文件,介于动态文档是ASP格式的,所以必须借助FSO进行XML文件的生成,比如:以下是引用片段:%xmlfile=server.mappath(test1.xml)Setfso=CreateObject(Scripting.FileSystemObject)SetMyFile=fso.CreateTextFile(xmlfile,True)MyFile.WriteLine(?xmlversion=1.0encoding=gb2312?)MyFile.WriteLine(世界)MyFile.WriteLine(你好hello,world/你好)MyFile.WriteLine(/世界)MyFile.Close%ahref=test1.xml查看XML文件内容/a如果按照生成动态的XML数据文件来说,则是将MyFile.WriteLine的相关内容在动态文档中通过程式的手段来控制XML节点的名称和值即可。三、如何使用动态文档生成XML数据那如果不是生成XML文件,直接在动态文档上输出XML数据呢,须声明文件的类型(即Response.ContentType)%Response.ContentType=text/XML%比如直接浏览如下的动态ASP文档,在浏览器中下则显示为XML数据树以下是引用片段:%WithResponse.ContentType=text/XML.write(?xmlversion=1.0encoding=gb2312?).write(世界).write(你好hello,world/你好).write(/世界)Endwith%生成的XML文件,其优势就是处理该XML数据的文档可以是静态文档,比如HTML文件通过Javascript、XMLDOM来解析XML,同时也易于数据的保留,而动态文档上的动态XML数据则没有这样有点。不过,在如今动态文档无处不在用的时代,似乎这个优势对于一些应用来说是无甚影响,甚至来说,动态文档的XML数据流反而更具优势:更及时、更动态。四、生成XML数据就是这样行了吗?无论是通过生成具体的XML文件,还是动态的XML数据流,只要按照XML的格式输出相关XML节点和值就可以了,这样看来XML似乎很简单。但这并没有真正接触到XML的操作。在我们看来,这些XML无非就是一些成对的标签和相关字符组成的数据记录,毫无生命力可言。然而事实上,通过XMLDOM来操作XML则显示了XML的绝对优势(这点在生成XML时优势不明显,却在添加、删除XML节点时体验无限)。使用XMLDOM创建XML文档,可使用Save方法生成XML文档,使用createElement方法创建XML元素、createNode创建节点,其实对于XML中的任何标签的创建都可以任意选择其中的一种,不过一般使用createElement创建顶层(根)元素,使用createNode创建子节点(元素),当然createElement和createNode的使用方法也是不同。以下是引用片段:%SetobjXMLdoc=CreateObject(Microsoft.XMLDOM)Setworld=objXMLdoc.createElement(世界)objXMLdoc.appendChild(world)Sethello=objXMLdoc.createNode(element,你好,)hello.Text=hello,worldobjXMLdoc.documentElement.appendChild(hello)objXMLdoc.SaveServer.MapPath(test2.xml)SetobjXMLdoc=Nothing%CreateObject(Microsoft.XMLDOM)声明使用XMLDOM对象在元素或节点被建立(createElement、createNode)时,其并没有加到文件树中,若要将节点加到文件树中,则需要插入,如appendChild。xmlDocument.createNode(type,name,nameSpaceURI)表示建立一个指定型态、名称,及命名空间的新节点type用来确认要被建立的节点型态,name是一个字符串来确认新节点的名称,命名空间的前缀则是选择性的。nameSpaceURI是一个定义命名空间URI的字符串。如果前缀被包含在名称参数中,此节点会在nameSpaceURI的内文中以指定的前缀建立。如果不包含前缀,指定的命名空间会被视为预设的命名空间。objXMLdoc.createNode(element,你好,)等同于objXMLdoc.createElement(你好)4,objXMLdoc.documentElement.appendChild(hello)其实就是XML文档根元素下建立节点,在本例中等同于world.appendChild(hello),world为本例中的节点名,以此类推。所以可以这样来写:以下是引用片段:%SetobjXMLdoc=CreateObject(Microsoft.XMLDOM)Setworld=objXMLdoc.createElement(世界)objXMLdoc.appendChild(world)Sethello=objXMLdoc.createElement(你好)hello.Text=hello,worldworld.appendChild(hello)objXMLdoc.SaveServer.MapPath(test2.xml)SetobjXMLdoc=Nothing%需要注意的是,通过XMLDOM生成的XML文件都是UTF-8格式的,这对我们所有应用程序文件的UTF-8化作了很好的推介。总结生成XML数据,可以使用FSO,如FSO被禁用,可使用XMLDOM,当然还可以直接使用动态文档。不过如果融会贯通地掌握XML的操作,XMLDOM操作是必须的。