SuMTuWThFSa
1234
567891011
12131415161718
19202122232425
2627282930
MONTH       YEAR
 Go Home 繁體  EN
 4★-AboutMe&Words
 5★-D/XHTML CSS
 5★-ASP(VBS) CMS
 3★-PHP C#.Net JSP
 4★-XML AJAX RIA
 3★-MySQL MSSQL
 4★-Fla FW PS
 3★-Design&Develop
 2★-Photography DC
 4★-Digest&Comment
 3★-Foreign language
 5★-Img Movie Music
Name:
Pwd:
 REGIST


  
Name:戴一波(cnbruce)
Location:扬州@中国
MSN:cnbruce#msn.com
Total Diary:1095
Reviews:7358
Members:49573
1. http://www.anyk...
2. 恭喜发财哈
3. 色弱啊咋办啊

4. 哈说的很有道理 http://...
5. 色弱会影响美术吗?
我觉得不...

6. 活该啊,baidu。googl...
7. 我支持了哦!
8. 好幸福啊!
9. 时间都过去一半了!
10. 有发展就会有所作为!

+ Dreamweaver教程

+ 扬州分类信息网

+ 音乐前线播报

+ 泰兴人才网

+ 毛绒玩具批发

可用rss2.asp?cat_id=xxx选择只查看某分类
订阅到抓虾
 
荐读:ASPWeb标准PHP用户体验AJAX《DW》书DW2ASPJSPC#.Net
Google 站外搜索 站内搜索

 本日志标题:asp操作xml之如何生成XML数据        [2007-1-18] Bookmark and Share

asp操作xml之如何生成XML数据

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

我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实实在在的XML文件,比如http://www.dw8.cn/common/dw8.xml 。也可以为asp文档,比如:http://www.cnbruce.com/blog/rss2.asp

他们都是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("<?xml version=""1.0"" encoding=""gb2312""?>")
MyFile.WriteLine("<世界>")
MyFile.WriteLine("<你好>hello,world</你好>")
MyFile.WriteLine("</世界>")
MyFile.Close
%>
<a href="test1.xml">查看XML文件内容</a>



有关FSO的操作参看:http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=440

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

三,如何使用动态文档生成XML数据

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


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


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


<%
With Response
    .ContentType = "text/XML"
    .write("<?xml version=""1.0"" encoding=""gb2312""?>")
    .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
%>


1,CreateObject("Microsoft.XMLDOM") 声明使用XMLDOM对象

2,在元素或节点被建立(createElement、createNode)时,其并没有加到文件树中,若要将节点加到文件树中,则需要插入,如appendChild。

3,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操作是必须的。


在百度搜索完整的asp操作xml之如何生成XML数据内容,或者用Google搜索相关的更多内容

By [cnbruce] at 19:28:35 | 评论 [6] | 浏览 [15441] | TrackBack| 返回顶部

About Comments
没必要这样吧,XMLDOM有save方法的,可以将字符串开工的xml代码存成文件的~
By [小串] at 2007-1-19 16:32:34
楼上没看完整教程,路过~
By [guest1] at 2007-1-19 18:15:20
楼主没看完整篇文单就坐沙发了,你说的save方法博主也有说明的。
文章提及多种生成XML数据方法,总结的很好。
受益
[Edit on 2007-1-21 13:48:10 By nalimai]
By [nalimai] at 2007-1-21 13:46:22
利用XMLDOM确实解决了服务器端更新XML文档的大问题!
FSO(TextStream)怎么就没有插入行中的方法呢?
By [cn-cuckoo] at 2007-1-27 22:10:19
By [cn-cuckoo] at 2007-1-27 22:12:18
学习&验证中.谢谢!
By [Young] at 2007-3-19 21:26:53


Post a Comment
呢称: 验证码: 
禁止笑脸转换 禁止UBB | 缩放输入框:6 5 | [Ctrl+Enter提交](1000个字符限制)

耳语 | 聚友 | Liury | D.JOY | POPO | 帅青蛙 | 164 | 祝福语 | 剑气 | 波希米亚 | 小毅 | 52CSS | 醉博客 | 老顾 | 水晶鱼 | 刘东 | 渔夫子 | 颢子 | A君 | 自由勇 | 凉爽 | 扬州刺绣 | 文歌随笔 | 萍果 | 天舟 | weilaixu | YHP | 扬州二手房
© Copyright 2003-2010 版权所有 [苏ICP备05000276号] Firefox火狐下载 本站法律顾问 空间支持:智亘