一必须弄清楚最终需要的是什么
我们通过asp或其他动态编程语言最终需要的是XML格式的数据这点和XML数据所在的文件载体无关它可以是实实在在的XML文件比如 也可以为asp文档比如
他们都是XML数据的体现为了实现XML数据的动态所以需要使用到动态编程语言比如ASP来实现生成它
二如何生成动态的XML文档
如果是生成XML文件介于动态文档是ASP格式的所以必须借助FSO进行XML文件的生成比如
<%
xmlfile=servermappath(testxml)
Set fso = CreateObject(ScriptingFileSystemObject)
Set MyFile = fsoCreateTextFile(xmlfileTrue)
MyFileWriteLine(<?xml version= encoding=gb?>)
MyFileWriteLine(<世界>)
MyFileWriteLine(<你好>helloworld</你好>)
MyFileWriteLine(</世界>)
MyFileClose
%>
<a >查看XML文件内容</a>
有关FSO的操作参看
cat_id=&log_id=
如果按照生成动态的XML数据文件来说则是将MyFileWriteLine的相关内容在动态文档中通过程式的手段来控制XML节点的名称和值即可
三如何使用动态文档生成XML数据
那如果不是生成XML文件直接在动态文档上输出XML数据呢须声明文件的类型(即ResponseContentType)
<%ResponseContentType = text/XML%>
比如直接浏览如下的动态ASP文档在浏览器中下则显示为XML数据树
<%
With Response
ContentType = text/XML
write(<?xml version= encoding=gb?>)
write(<世界>)
write(<你好>helloworld</你好>)
write(</世界>)
End with
%>
生成的XML文件其优势就是处理该XML数据的文档可以是静态文档比如HTML文件通过JavascriptXMLDOM来解析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(MicrosoftXMLDOM)
Set world=objXMLdoccreateElement(世界)
objXMLdocappendChild(world)
Set hello=objXMLdoccreateNode(element 你好 )
helloText = helloworld
objXMLdocdocumentElementappendChild(hello)
objXMLdocSave ServerMapPath(testxml)
Set objXMLdoc = Nothing
%>
CreateObject(MicrosoftXMLDOM) 声明使用XMLDOM对象
在元素或节点被建立(createElementcreateNode)时其并没有加到文件树中若要将节点加到文件树中则需要插入如appendChild
xmlDocumentcreateNode(type name nameSpaceURI) 表示建立一个指定型态名称及命名空间的新节点
type 用来确认要被建立的节点型态name 是一个字符串来确认新节点的名称命名空间的前缀则是选择性的nameSpaceURI 是一个定义命名空间URI 的字符串如果前缀被包含在名称参数中此节点会在nameSpaceURI 的内文中以指定的前缀建立如果不包含前缀指定的命名空间会被视为预设的命名空间
objXMLdoccreateNode(element 你好 ) 等同于 objXMLdoccreateElement(你好)
objXMLdocdocumentElementappendChild(hello)其实就是XML文档根元素下建立节点在本例中等同于 worldappendChild(hello)world为本例中的节点名以此类推
所以可以这样来写
<%
Set objXMLdoc = CreateObject(MicrosoftXMLDOM)
Set world=objXMLdoccreateElement(世界)
objXMLdocappendChild(world)
Set hello=objXMLdoccreateElement(你好)
helloText = helloworld
worldappendChild(hello)
objXMLdocSave ServerMapPath(testxml)
Set objXMLdoc = Nothing
%>
需要注意的是通过XMLDOM生成的XML文件都是UTF格式的这对我们所有应用程序文件的UTF化作了很好的推介
总结
生成XML数据可以使用FSO如FSO被禁用可使用XMLDOM当然还可以直接使用动态文档不过如果融会贯通地掌握XML的操作XMLDOM操作是必须的