Username: Password:

怎样用asp生成xml数据文档(rss订阅)_asp技巧
来源:网页教学网作者:未知 发布时间:2007-12-11 06:22:05

一、必须弄清楚最终需要的是什么

我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文档载体无关,他能够是实实在在的XML文档,比如:http://blog.knowsky.com/rss_1.xml 。也能够为asp文档,比如:http://www.knowsky.com/rss.asp?id=42

他们都是XML数据的体现,为了实现XML数据的动态,所以需要使用到动态编程语言,比如ASP来实现生成他。

二、怎样生成动态的XML文档

假如是生成XML文档,介于动态文档是ASP格式的,所以必须借助FSO进行XML文档的生成,比如:

以下是引用片段:
<%
xmlfile=server.mappath("test1.xml")
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(xmlfile,True)
MyFile.WriteLine("")
MyFile.WriteLine("<世界>")
MyFile.WriteLine("<您好>hello,world")
MyFile.WriteLine("")
MyFile.Close
%>

查看XML文档内容

有关FSO的操作参看
http://www.knowsky.com/tag-7.html

假如按照生成动态的XML数据文档来说,则是将MyFile.WriteLine的相关内容在动态文档中通过程式的手段来控制XML节点的名称和值即可。

三、怎样使用动态文档生成XML数据

那假如不是生成XML文档,直接在动态文档上输出XML数据呢,须声明文档的类型(即Response.ContentType)

<%Response.ContentType = "text/XML"%>

比如直接浏览如下的动态ASP文档,在浏览器中下则显示为XML数据树

以下是引用片段:
<%
With Response
    .ContentType = "text/XML"
    .write("")
    .write("<世界>")
    .write("<您好>hello,world")
    .write("")
End with
%>


生成的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的使用方法也是不同。


以下是引用片段:
<%
Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
Set world=objXMLdoc.createElement("世界")
objXMLdoc.appendChild(world)
Set hello=objXMLdoc.createNode("element", "您好", "")
hello.Text = "hello,world"
objXMLdoc.documentElement.appendChild(hello)
objXMLdoc.Save Server.MapPath("test2.xml")
Set objXMLdoc = 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为本例中的节点名,以此类推。
所以能够这样来写:


以下是引用片段:
<%
Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
Set world=objXMLdoc.createElement("世界")
objXMLdoc.appendChild(world)
Set hello=objXMLdoc.createElement("您好")
hello.Text = "hello,world"
world.appendChild(hello)
objXMLdoc.Save Server.MapPath("test2.xml")
Set objXMLdoc = Nothing
%>
 

需要注意的是,通过XMLDOM生成的XML文档都是UTF-8格式的,这对我们任何应用程式文档的UTF-8化作了很好的推介。

总结

生成XML数据,能够使用FSO,如FSO被禁用,可使用XMLDOM,当然还能够直接使用动态文档。但是假如融会贯通地掌控XML的操作,XMLDOM操作是必须的。

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅