将HTML表单数据存储为XML格式

博客介绍了在ASP中把表单数据存为XML格式的方法。可通过Microsoft XMLDOM Object创建新XML文档,演示了其创建过程及结构。还说明了将HTML数据写入XML文档的步骤,通过ASP完成,并给出普通HTML表单数据写入XML文件的示例及相关注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如你熟知ASP,XML和HTML4。0,请读下列示例

将表单数据存为XML格式

  通常的,ASP中表单提交的数据一般被写入数据库。然而,如果你想让发送数据更为简便易行,那么,可以将它书写为XML文件格式。这种方式对于在web上收集的数据更为有用。因为XML对于所用平台来说非常的简便,所以用不着转换数据格式。

  将提交的数据写为XML文档,则需要通过Microsoft XMLDOM Object创建一个新的XML文档。Microsoft XMLDOM Object拥有一个可扩展对象库,通过它可以创建elements,attributes以及values,通过创建的这些项目则可以组成XML文档。我无法将整个目标模型做个完整的介绍,因为它所包含的内容太广泛,对于将建成的网站来说,目标模型甚至通过自身也能组建一个相对完整的部份。

  在XMLDOM Object被创建出来之后,通过创建目标(此目标是关于组成XML文档中每一层的ELEMENTS而言)XML的结构会被演示出来。接下来,会举例说明XMLDOM是怎样被创建出来的。创建root element之后,将它附加在XMLDOM文件上。然后创建child elements并附加在root element上,最后存储文档。


演示Microsoft XMLDOM 对象

<%
DimobjDom
DimobjRoot
DimobjChild1
DimobjChild2
DimobjPI

"XMLDOM对象使用Server对象的CreateObject方法创建
SetobjDom=Server.CreateObject("Microsoft.XMLDOM")
"使用XMLDOM的createElemnet方法创建一个IXMLDOMElement对象。
"createElemnet方法又一个string参数,这个string表示该element的名称。
返回值被传递到objRoot变量。objRoot表示XML文档的根元素.。

SetobjRoot=objDom.createElement("rootElement")

"UsetheappendChildMethodoftheXMLDOMObjecttoaddtheobjRoot
"ElementReferencetotheXMLDocument.

objDom.appendChildobjRoot

"Now,followingthesamesteps,youwillcreatereferencestothe
"childelementsfortheXMLDocument.Theonlydifferenceis,whenthe
"childelementsareappendedtothedocument,youwillcallthe
"appendChildMethodoftheIXMLDOMElementObjectratherthanthe
"appendChildMethodoftheXMLDOMObject.ByusingtheIXMLDOMElement
"toappendthechildren,youaredifferentiating(andapplyingtiered
"structureto)thechildelementsfromtherootelement.

SetobjChild1=objDom.createElement("childElement1")
objRoot.appendChildobjChild1
SetobjChild1=objDom.createElement("childElement2")
objRoot.appendChildobjChild2

"Thefinalsteptotakecareofbeforesavingthisdocumentistoadd
"anXMLprocessinginstruction.ThisisnecessarysothatXMLparsers
"willrecognizethisdocumentasanXMLdocument.

SetobjPI=objDom.createProcessingInstruction("xml","vertsion="1.0"")

"CalltheinsertBeforeMethodoftheXMLDOMObjectinordertoinsert
"theprocessinginstructionbeforetherootelement(thezeroelement
"intheXMLDOMchildNodesCollection).

objDom.insertBeforeobjPI,objDom.childNodes(0)

"CallingtheSaveMethodoftheXMLDOMObjectwillsavethisXML
"documenttoyourdiskdrive.Inthiscase,thedocumentwillbesaved
"tothe"c:"driveandwillbenamed"MyXMLDoc.xml".Whensavingan
"XMLdocument,ifthefiledoesnotexist,itwillbecreated.Ifit
"doesexist,itwillbeoverwritten.

objDom.Save"c:MyXMLDoc.xml"

%>


文档被存档之后,如果你再打开这个文档,那么则会以如下代码列表形式出现:

MyXMLDoc.xml:

<?xmlversion="1.0"?>
<rootElement>
<childElement1/>
<childElement2/>
</rootElement>


  在"MyXMLDoc.xml"文档中,childElement1 和 childElement2 会以空的elements形式出现。如果它们被赋值,那么每个值都将由标记符括起来。

  现在,让我们来思考一下如何将HTML数据写到XML文档中去。我们已经知道该如何创建和存储XML文档。将一个表单数据写到XML文档中去的过程,现在已演变成为Request Object"s Form Collection以及将每一个表单域的value书定到XML element value 中去的步骤重复。以上可以通过ASP来完成。

例:将数据输送到XML

  现在,我们举一个普通的HTML表单的例子来说明。此Form有用户名,地址,电话,以及E-MAIL等几个域。并将这些信息写入XML文件中并保存。

EnterContact.html:

<html>
<head>
<title>
ContactInformation
</title>
</head>
<body>
<tableborder="1">
<formaction="ProcessForm.asp"method="post">
<tr><tdcolspan="2">Pleaseinputyourcontactinfomationhere:</td></tr>
<tr><td>FirstName:</td><td><inputtype="text"id="FirstName"name="FirstName"></td></tr>
<tr><td>LastName:</td><td><inputtype="text"id="LastName"name="LastName"></td></tr>
<tr><td>Address#1:</td><td><inputtype="text"id="Address1"name="Address1"></td></tr>
<tr><td>Address#2:</td><td><inputtype="text"id="Address2"name="Address2"></td></tr>
<tr><td>PhoneNumber:</td><td><inputtype="text"id="Phone"name="Phone"></td></tr>
<tr><td>E-Mail:</td><td><inputtype="text"id="EMail"name="EMail"></td></tr>
<tr><tdcolspan="2"align="center"><inputtype="submit"id="btnSub"name="btnSub"value="Submit"></td></tr>
</form>
</table>
</body>
</html>


  将Form 中数据发送到ProcessForm.asp.。这是一个ASP页面,在这个ASP中将反复调用同一个函数将form数据写入XML
文件。

ProcessForm.asp:

<%
'--------------------------------------------------------------------
'
The"ConvertFormtoXML"Functionacceptstoparameters.
'
strXMLFilePath-ThephysicalpathwheretheXMLfilewillbesaved.
'
strFileName-ThenameoftheXMLfilethatwillbesaved.
'
--------------------------------------------------------------------
FunctionConvertFormtoXML(strXMLFilePath,strFileName)
'Declarelocalvariables.
DimobjDom
DimobjRoot
DimobjField
DimobjFieldValue
DimobjAttID
DimobjAttTabOrder
DimobjPI
Dimx
'InstantiatetheMicrosoftXMLDOM.
SetobjDom=server.CreateObject("Microsoft.XMLDOM")
objDom.PreserveWhiteSpace
=True
'CreateyourrootelementandappendittotheXMLdocument.
SetobjRoot=objDom.CreateElement("Contact")
objDom.AppendChildobjRoot
'IteratethroughtheFormCollectionoftheRequestObject.
Forx=1ToRequest.Form.Count
'Checktoseeif"btn"isinthenameoftheformelement.
'Ifitis,thenitisabuttonandwedonotwanttoaddit
'totheXMLdocument.
IfInstr(1,Request.Form.Key(x),"btn")=0Then
'Createanelement,"field".
SetobjField=objDom.CreateElement("Field")
'Createanattribute,"ID".
SetobjAttID=objDom.CreateAttribute("ID")
'Setthevalueoftheidattributeequalthethenameof
'thecurrentformfield.
objAttID.Text=Request.Form.Key(x)
'ThesetAttributeNodemethodwillappendtheidattribute
'tothefieldelement.
objField.SetAttributeNodeobjAttID
'Createanotherattribute,"taborder".Thisjustordersthe
'elements.
SetobjattTabOrder=objDom.createAttribute("taborder")
'Setthevalueofthetaborderattribute.
objAttTabOrder.Text=x
'Appendthetaborderattributetothefieldelement.
objField.SetAttributeNodeobjAttTabOrder
'Createanewelement,"field_value".
SetobjFieldValue=objDom.CreateElement("FieldValue")
'Setthevalueofthefield_valueelementequalto
'thevalueofthecurrentfieldintheFormCollection.
objFieldValue.Text=Request.Form(x)
'Appendthefieldelementasachildoftherootelement.
objRoot.AppendChildobjField
'Appendthefield_valueelementasachildofthefieldelemnt.
objField.AppendChildobjFieldValue
EndIf
Next
'Createthexmlprocessinginstruction.
SetobjPI=objDom.CreateProcessingInstruction("xml","version=""1.0""")
'AppendtheprocessinginstructiontotheXMLdocument.
objDom.InsertBeforeobjPI,objDom.ChildNodes(0)
'SavetheXMLdocument.
objDom.SavestrXMLFilePath&""&strFileName
'Releaseallofyourobjectreferences.
SetobjDom=Nothing
SetobjRoot=Nothing
SetobjField=Nothing
SetobjFieldValue=Nothing
SetobjAttID=Nothing
SetobjAttTabOrder=Nothing
SetobjPI=Nothing
EndFunction
'Donotbreakonanerror.
OnErrorResumeNext
'CalltheConvertFormtoXMLfunction,passinginthephysicalpathto
'
savethefiletoandthenamethatyouwishtouseforthefile.
ConvertFormtoXML"F:\Asp\","Contact.xml"
'Testtoseeifanerroroccurred,ifso,lettheuserknow.
'
Otherwise,telltheuserthattheoperationwassuccessful.
IfErr.Number<>0then
Response.Write(
"Errorsoccurredwhilesavingyourformsubmission.")
Else
Response.Write(
"Yourformsubmissionhasbeensaved.<br><ahref='javascript:history.go(-1)'>GoBack</a>")
EndIf
%
>


  如果你是在你自己的应用程序中使用以上代码,请谨记一件事情,在"ConvertFormtoXML"函数已经运行的情况下,如果XML文件名已经存在,那么,文件将会被覆盖。在此,我建议在使用"ConvertFormtoXML"功能前,最好用随机建立的文件名。这样,就将有价值数据被改写的风险降为零。

  关于XML文件的产生,举例如下:


Contact.xml:

<?xmlversion="1.0"?>
<!--editedwithXMLSPYv2004rel.4U(http://www.xmlspy.com)byDicky(Apple'SEden)-->
<contact>
<FieldID="FirstName"TabOrder="1">
<FieldValue>Dicky</FieldValue>
</Field>
<FieldID="LastName"TabOrder="2">
<FieldValue>Gu</FieldValue>
</Field>
<FieldID="Address1"TabOrder="3">
<FieldValue>ShangHai</FieldValue>
</Field>
<FieldID="Address2"TabOrder="4">
<FieldValue>BeiJing</FieldValue>
</Field>
<FieldID="Phone"TabOrder="5">
<FieldValue>123456</FieldValue>
</Field>
<FieldID="EMail"TabOrder="6">
<FieldValue>AppleBBS@GMail.Com</FieldValue>
</Field>
</contact>


  我在此建议:将以上代码复制到你个人网站服务器上的同名页面上,并运行以上示例时。请一定要明确你使用的是对你个人服务器有效的路径和文件名。

  当你一切准备好时,请再次检验你的XML文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值