网络编程:如何生成XML数据

ZDNet软件频道 时间:2008-07-05 作者: | 中国IT实验室 我要评论()
本文关键词:数据 生成 xml 软件
我们通过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.aspcat_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. 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操作是必须的。

数据

生成

xml

软件


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