一,必须弄清楚最终需要的是什么
我们通过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文件,还是动态的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。