ASP XML編程objXML.async = False
其它示例:
1、WEB鏈接
<HTML>
<BODY>
<%
Dim objXML, objRootElement, strLinkName, strLinkURL, strLinkTarget, sourceFile, i
sourceFile = Request.ServerVariables("APPL_PHYSICAL_PATH") & "xml\Links.xml"
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.validateOnParse = True
objXML.async = false
objXML.load(sourceFile)
set objRootElement = objXML.documentElement
for i = 0 to objRootElement.childNodes.length-1
strLinkName = objRootElement.childNodes.item(i).text
strLinkURL = objRootElement.childNodes.item(i).getAttribute("url")
strLinkTarget = objRootElement.childNodes.item(i).getAttribute("target")
response.write("<a href=" & strLinkURL & " target=" & strLinkTarget & ">" & strLinkName & "</a><br>")
next
set objXML = nothing
%>
</BODY>
</HTML>
Links.xml
<?xml version="1.0" ?>
<relatedlinks>
<link url="default0.asp" target="_blank">Front Page 0</link>
<link url="default1.asp" target="_blank">Front Page 1</link>
<link url="default2.asp" target="_blank">Front Page 2</link>
<link url="default3.asp" target="_blank">Front Page 3</link>
</relatedlinks>
2、XML文件的生成
gen_xml.asp
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Developer Studio">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Generate XML</TITLE>
</HEAD>
<BODY>
<%
Create an empty root node for the document.
Set rootNode = Server.CreateObject("AspXml.AspXml")
rootNode.Encoding = "ISO-8859-1"
rootNode.Standalone = "yes"
rootNode.Tag = "table"
for row = 1 to 10
Set rowNode = rootNode.NewChild("row","")
for col = 1 to 10
Set colNode = rowNode.NewChild("column","("&col&","&row&")")
next
next
rootNode.SaveXml(Server.MapPath("table.xml"))
Set rootNode = Nothing
%>
</BODY>
</HTML>
3、向XML文件中追加結(jié)點(diǎn)
addItem.asp
<%
If request.ServerVariables("REQUEST_METHOD")="POST" Then
call writeXML
Else
call showForm
End If
Sub showForm
%>
<html>
<body>
Please enter the persons contact details
<form action="addItem.asp" method="post">
Name: <input type="text" name="name"> Email: <input type="text" name="email">
<input type="submit" name="submit" value="Add">
</form>
</body>
</html>
<%
End Sub
Sub writeXML
find xml file path
Dim strFilename,strXMLFile
strFilename = "contacts.xml"
strXMLFile=server.mapPath(strFilename)
standard "create xml object" code
set oXML = server.createObject("Microsoft.XMLDOM")
oXML.async = False
check file exists
bitFileExists = oXML.load(strXMLFile)
If bitFileExists Then
tmpChildnodes = oXML.documentElement.childnodes.length - 1
intCurrentRecord = tmpChildnodes + 1
Else
create xml
oXML.appendChild(oXML.createProcessingInstruction("xml","version=""1.0"""))
oXML.appendChild(oXML.createElement("contacts"))
intCurrentRecord = 0
End If
create record
set oXMLRec = oXML.createElement("contact")
Create an id attribute
Set oAtt = oXML.createAttribute("id")
oAtt.Text = intCurrentRecord
oXMLRec.setAttributeNode oAtt
set remaining fields
name
oXMLRec.appendChild(oXML.createElement("name"))
oXMLRec.childnodes(0).text = request.form("name")
email address
oXMLRec.appendChild(oXML.createElement("email"))
oXMLRec.childnodes(1).text = request.Form("email")
date stamp
oXMLRec.appendChild(oXML.createElement("created"))
oXMLRec.childnodes(2).text = now()
write new record
oXML.documentElement.appendChild(oXMLRec.cloneNode(True))
save file
oXML.save strXMLFile
redirect to xml file
response.redirect(strFilename)
oXML = nothing
End Sub
%>
contacts.xml
<?xml version="1.0"?>
<CONTACT_INFO>
<contact id="1">
<name>bubu</name>
<email>zhou813@163.com</email>
<created>2003/04/29 9:26:51</created>
</contact>
<contact id="2">
<name>22222</name>
<email>222222222</email>
<created>2003-5-12 18:15:41</created>
</contact>
</CONTACT_INFO>
4、留言薄
<%
username=request.form("username")
if username<>"" then
fromwhere =request.form("fromwhere")
homepage =request.form("homepage")
email =request.form("email")
text =Server.URLEncode(request.form("text"))
Posttime =now()
sourceFile = "list.xml"
strSourceFile = Server.MapPath(sourceFile)
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
blnRet = objXML.load(strSourceFile)
If blnRet Then
Set objRootlist = objXML.documentElement
if objRootlist.hasChildNodes then
id = objRootlist.lastchild.firstchild.text+1
else
id=1
end if
Else
objXML.appendChild(objXML.createProcessingInstruction("xml","version=""1.0"""))
set objRootlist = objXML.createElement("NewList")
objXML.appendChild(objRootlist)
id = 1
End If
brstr=chr(13)&chr(10)&chr(9)
XMLnode=brstr&"<list>"&brstr & _
"<id>"&id&"</id>"&brstr & _
"<username>"&username&"</username>"&brstr & _
"<fromwhere>"&fromwhere&"</fromwhere>"&brstr & _
"<Posttime>"&Posttime&"</Posttime>"&brstr & _
"<homepage>"&homepage&"</homepage>"&brstr & _
"<email>"&email&"</email>"&brstr & _
"<text>"&text&"</text>"&brstr & _
"</list>"&chr(13)
set objXML2=Server.CreateObject("Microsoft.XMLDOM")
objXML2.loadXML(XMLnode)
set rootNewNode=objXML2.documentElement
objRootlist.appendChild(rootNewNode)
objXML.save(strSourceFile)
set objXML=nothing
set objXML2=nothing
response.redirect(strSourceFile)
end if
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
td { font-size: 9pt}
-->
</style>
</head>
<body bgcolor="#0099CC" text="#000000">
<table width="80%" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#FFFFFF">
<form action="PostNew.asp" method="post" name="form1">
<tr bgcolor="#000000">
<td colspan="2"><font color="#FFFFFF">New Book</font></td>
</tr>
<tr bgcolor="#EFEFEF">
<td width="19%" align="right">Name:</td>
<td width="81%">
<input type="text" name="username">**
</td>
</tr>
<tr bgcolor="#EFEFEF">
<td width="19%" align="right">ComeFrom:</td>
<td width="81%">
<input type="text" name="fromwhere" value="China">
</td>
</tr>
<tr bgcolor="#EFEFEF">
<td width="19%" align="right">WebSite:</td>
<td width="81%">
<input type="text" name="homepage" value="http://">
</td>
</tr>
<tr bgcolor="#EFEFEF">
<td width="19%" align="right">Email:</td>
<td width="81%">
<input type="text" name="email">
</td>
</tr>
<tr bgcolor="#EFEFEF">
<td width="19%" align="right" valign="top">Context:</td>
<td width="81%">
<textarea name="text" cols="60" rows="10"></textarea>
</td>
</tr>
<tr bgcolor="#EFEFEF">
<td width="19%" align="right"> </td>
<td width="81%">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</td>
</tr>
</form>
</table>
</body>
</html>
四、使用DOM生成XML總結(jié)
了解XML文檔對(duì)象模型
XML DOM包含四個(gè)主要對(duì)象:XMLDOMDocument, XMLDOMNode,XMLDOMNodeList和XMLDOMNamedNodeMap。同任何其它對(duì)象模型一樣,每個(gè)XML DOM對(duì)象有其自己的特性和方法。本文,我們將主要介紹XMLDOMDocument 和XMLDOMNode 對(duì)象。
XMLDOMDocument對(duì)象
XMLDOMDocument對(duì)象代表XML DOM層次中的頂層結(jié)點(diǎn)(請(qǐng)不要同XML文檔中的根結(jié)點(diǎn)混淆)。它是建立和操縱XML結(jié)構(gòu)的基礎(chǔ)。為了創(chuàng)建XMLDOMDocument對(duì)象變量,請(qǐng)使用如下的CreateObject 命令:
Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
表A:列出了在創(chuàng)建了XMLDOMDocument的對(duì)象后,我們可以得到的一些特性和方法。
方法 描述
CreateAttribute 創(chuàng)建新屬性
CreateCDATASection 創(chuàng)建DATA 部分結(jié)點(diǎn)
CreateComment 創(chuàng)建注釋結(jié)點(diǎn)
CreateElement 使用指定名稱(chēng)創(chuàng)建元素結(jié)點(diǎn)
CreateEntityReference 創(chuàng)建實(shí)體參考對(duì)象
CreateNode 創(chuàng)建結(jié)點(diǎn)
CreateTextNode 創(chuàng)建文本結(jié)點(diǎn)
Load 載入已有的 XML 文檔
Save 保存XML 文檔
特性 描述
PreserveWhiteSpace 指示是否在XML文檔中顯示空格t
ResolveExternals 解析名域,DTD和外部實(shí)體索引
ValidateOnParse 指示解析器是否對(duì)文檔進(jìn)行合法性檢查
DocumentElement 返回XML 文檔的根結(jié)點(diǎn)
設(shè)置運(yùn)行選項(xiàng)
正如你在表A中所看到的,只有創(chuàng)建了XMLDOMDocument 對(duì)象,你才可創(chuàng)建單個(gè)的XML結(jié)點(diǎn)。在做這個(gè)工作之前,你還可以設(shè)置XML文檔的解析運(yùn)行條件,如果你打算直接生成XML文檔到瀏覽器時(shí),就很有用處。
運(yùn)行選項(xiàng)可以讓你設(shè)置異步下載,提供文檔合法性檢查和保留空格,以及解析外部索引。為了防止異步下載,可設(shè)置asynch特性為False。如果打算用一行新字符代替空格,可設(shè)置PreserveWhiteSpace 特性為T(mén)rue。 ResolveExternals特性可防止解析引擎解析外部實(shí)體索引,文檔類(lèi)型定義或者外部名域。
1、創(chuàng)建結(jié)點(diǎn)
XMLDOMDocument 對(duì)象提供了創(chuàng)建結(jié)點(diǎn)或者XMLDOMNode的兩種方法: CreateElement 和CreateNode。選擇其中哪一種方法,取決于你需要結(jié)點(diǎn)提供信息量的多少。當(dāng)你使用CreateElement 方法時(shí),只要提供結(jié)點(diǎn)名稱(chēng),如
Set objXMLroot = objXMLdoc.CreateElement("ORDER_STATUS")
當(dāng)使用CreateNode 方法時(shí),你要指定結(jié)點(diǎn)類(lèi)型,結(jié)點(diǎn)名稱(chēng)和相關(guān)名域。(XML名域可以讓你擇同一文檔中用同一名稱(chēng)創(chuàng)建多個(gè)XML元素) 例如,如果要使用CreateNode方法,你可寫(xiě)出如下代碼:
Set objXMLroot = objXMLdoc.createNode("element","ORDER_STATUS","Space1")
一旦創(chuàng)建了結(jié)點(diǎn),你須把它添加進(jìn)XML文檔中。這就要用AppendChild 方法,例如,繼續(xù)上面的例子,你可以寫(xiě)出:
objXMLdoc.AppendChild(objXMLroot)
該語(yǔ)句創(chuàng)建了XML根結(jié)點(diǎn)。
除了AppendChild方法外,XMLDOMNode 對(duì)象也具有其它三個(gè)控制XML結(jié)點(diǎn)的方法: ReplaceChild, RemoveChild和InsertBefore
2、對(duì)結(jié)點(diǎn)的屬性賦值
一旦創(chuàng)建了結(jié)點(diǎn),還要對(duì)其屬性賦值,如獨(dú)立的標(biāo)識(shí)符,或者特性值。你要用到SetAttribute方法。該方法接收兩個(gè)參數(shù)— 屬性名和屬性值。例如,下列代碼創(chuàng)建了屬性名SHIPPING_DATASOURCE 和屬性值NORTH_ATLANTIC_SHIPPING:
objXMLroot.SetAttribute "SHIPPING_DATASOURCE","NORTH_ATLANTIC_SHIPPING"
此時(shí),我們生成了一個(gè)XML文檔,SetAttributes方法創(chuàng)建了結(jié)點(diǎn)屬性 。
3、加入子結(jié)點(diǎn)
要?jiǎng)?chuàng)建子結(jié)點(diǎn),你可以使用我們前面介紹的CreateElement或者 CreateNode 方法,然后把它們添加到合適的父母結(jié)點(diǎn)中。例如,假設(shè),我們要?jiǎng)?chuàng)建稱(chēng)為PUBLISHER_DISCLAIMER的XML結(jié)點(diǎn)。為了做到這一點(diǎn),我們把該結(jié)點(diǎn)附加到文檔的根結(jié)點(diǎn)中,代碼如下:
Set objXMLChildTestNode = objXMLdoc.createNode("element","PUBLISHER_DISCLAIMER","")
objXMLdoc.DocumentElement.appendChild(objXMLChildTestNode)
注意:我們使用了XMLDOMDocument的 DocumentElement 特性來(lái)把新結(jié)點(diǎn)添加到XML文檔的根結(jié)點(diǎn)中,要添加子結(jié)點(diǎn),你只需把它們添加到父母結(jié)點(diǎn)中。
4、給結(jié)點(diǎn)賦值
一旦創(chuàng)建完所有的結(jié)點(diǎn),你將需要給它們賦值。那是XML最關(guān)鍵的步驟。要做到這點(diǎn),你同平常一樣,創(chuàng)建一個(gè)結(jié)點(diǎn),然后對(duì)該結(jié)點(diǎn)的TEXT屬性賦值。
相關(guān)文章
asp文章中隨機(jī)插入網(wǎng)站版權(quán)文字的實(shí)現(xiàn)代碼
網(wǎng)站不斷被人抄襲采集,在百度對(duì)采集網(wǎng)站還沒(méi)有有效的打擊下,我們不能指望百度可以識(shí)別這些采集網(wǎng)站,那么只能依靠我們自己給我們辛辛苦苦做的內(nèi)容加上版權(quán)文字,以打擊這種不勞而獲的采集行為。2008-08-08ASP中只有UrlEncode,沒(méi)有Urldecode問(wèn)題的解決方法?
這篇文章主要介紹了ASP中只有UrlEncode,沒(méi)有Urldecode問(wèn)題的解決方法? ,需要的朋友可以參考下2015-05-05asp利用Split函數(shù)進(jìn)行多關(guān)鍵字檢索
怎樣提取數(shù)據(jù)庫(kù)用|隔開(kāi)的字!2009-09-09ASP生成隨機(jī)字符串(數(shù)字+大小寫(xiě)字母)的代碼
ASP生成隨機(jī)字符串(數(shù)字+大小寫(xiě)字母)的代碼...2007-10-10ASP 關(guān)于動(dòng)態(tài)數(shù)據(jù)顯示頁(yè)面得錨點(diǎn)
ASP 關(guān)于動(dòng)態(tài)數(shù)據(jù)顯示頁(yè)面得錨點(diǎn)...2007-09-09asp 得到動(dòng)態(tài)數(shù)組中元素的個(gè)數(shù)
主要用到了 ubound(數(shù)組的名稱(chēng)) 這個(gè)函數(shù),這個(gè)函數(shù)用來(lái)求數(shù)組的上邊界。2009-06-06巧用FileSystem組件實(shí)現(xiàn)WEB應(yīng)用中的本地特定打印的方法
巧用FileSystem組件實(shí)現(xiàn)WEB應(yīng)用中的本地特定打印的方法...2007-04-04