asp如何生成XML数据
作者:cnbruce 来源:蓝色理想 发布时间:2007-08-20 09:50:00
内容摘要:为什么要什么XML文件:其优势就是处理该XML数据的文档可以是静态文档,比如HTML文件通过Javascript、XMLDOM来解析XML,同时也易于数据的保留,而动态文档上的动态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>
如果按照生成动态的XML数据文件来说,则是将MyFile.WriteLine的相关内容在动态文档中通过程式的手段来控制XML节点的名称和值即可。
三,如何使用动态文档asp生成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文件,还是动态的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操作是必须的。
猜你喜欢
- 1. 反射简介1.1 反射是什么?Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道
- BEGIN -- 声明变量 DECLARE v_addtime_begin varchar(13); DECLARE v_addtime_e
- Python3,开一个线程,间隔1秒把一个递增的数字写入队列,再开一个线程,从队列中取出数字并打印到终端#! /usr/bin/env py
- 目录问题描述解决方案讨论总结问题描述怎样在数据字典中执行一些计算操作(比如求最值、排序等)?解决方案有如下字典:stocks = { &nb
- 访问phpmyadmin时总是出现 “无法载入 mysql 扩展,请检查 PHP 配置”。
- 一、前言B站上的漂亮的小姐姐真的好多好多,利用 you-get * 下载了一个 B 站上跳舞的小姐姐视频,利用视频中的弹幕来制作一个漂亮小姐
- tensorflow版本1.4获取变量维度是一个使用频繁的操作,在tensorflow中获取变量维度主要用到的操作有以下三种:Tensor.
- 使用环境:Win10 x64 Python:3.6.4 SqlServer:2008R2 因为
- 本文实例讲述了Python简单实现两个任意字符串乘积的方法。分享给大家供大家参考,具体如下:题目:给定两个任意数字组成的字符串,求乘积,字符
- Python3支持三种不同的数值类型:整型(int)--通常被称为是整型或整数,可以是正整数或负整数,不带小数点。Python3整型是没有限
- 准备工作查看肯德基官网的请求方法:post请求。X-Requested-With: XMLHttpRequest 判断得肯德基官网是ajax
- 昨天在得写“RSS收藏”栏目展现的时候我让RSS的列表用弹出的形式展现了,开始是直接的控制 style.display 来做的,但是感觉有点
- 前言通常在读写文件之前,我们需要先判断文件或者目录是否存在。不然在接下来的处理中可能会报错。所以在做任何操作之前,最好还是先判断文件、目录是
- 本文的重点就是如何创建一个PHP类来实现两个数间的加减乘除,这种类似于极简单的计算器功能。实现起来是非常简单的,继续往下看:这里简单给大家介
- OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的
- 在ASP输出页面只是调出数据库里内容展现给用户看没有使用SESSION等动态属性,是可以CACHE的,以加快访问速度具体操作方法如下:在as
- 关于CSS中的命名规则(其实我觉得是XHTML元素的命名规则更加合理些)这个问题,已经有很多人在说了,其中也不乏一些真知灼见。不过这种东西也
- 1、序言  上一节快速搭建Express开发系统步骤,对如何使用express-generator创建一
- isdecimal()方法检查字符串是否仅由十进制字符组成。此方法只存在于unicode对象。注意:要定义一个字符串为Unico
- 科讯sql商业版中用到的ajax空间与分页函数,他们的js代码学习是非常不错的//ajax 控件 function Pa