如你熟知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 对象

将HTML表单数据存储为XML格式<%
将HTML表单数据存储为XML格式
Dim objDom
将HTML表单数据存储为XML格式
Dim objRoot
将HTML表单数据存储为XML格式
Dim objChild1
将HTML表单数据存储为XML格式
Dim objChild2
将HTML表单数据存储为XML格式
Dim objPI
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
" XMLDOM 对象使用Server对象的CreateObject方法创建
将HTML表单数据存储为XML格式
Set objDom = Server.CreateObject("Microsoft.XMLDOM")
将HTML表单数据存储为XML格式
"使用XMLDOM的createElemnet方法创建一个IXMLDOMElement对象。
将HTML表单数据存储为XML格式
"createElemnet方法又一个string参数,这个string 表示该element的名称。
将HTML表单数据存储为XML格式返回值被传递到objRoot变量。objRoot表示XML文档的根元素.。
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
Set objRoot = objDom.createElement("rootElement")
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
"Use the appendChild Method of the XMLDOM Object to add the objRoot
将HTML表单数据存储为XML格式
"Element Reference to the XML Document.
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式objDom.appendChild objRoot
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
"Now, following the same steps, you will create references to the
将HTML表单数据存储为XML格式
"child elements for the XML Document. The only difference is, when the
将HTML表单数据存储为XML格式
"child elements are appended to the document, you will call the
将HTML表单数据存储为XML格式
"appendChild Method of the IXMLDOMElement Object rather than the
将HTML表单数据存储为XML格式
"appendChild Method of the XMLDOM Object. By using the IXMLDOMElement
将HTML表单数据存储为XML格式
"to append the children, you are differentiating (and applying tiered
将HTML表单数据存储为XML格式
"structure to) the child elements from the root element.
将HTML表单数据存储为XML格式

将HTML表单数据存储为XML格式
Set objChild1 = objDom.createElement("childElement1")
将HTML表单数据存储为XML格式objRoot.appendChild objChild1
将HTML表单数据存储为XML格式
Set objChild1 = objDom.createElement("childElement2")
将HTML表单数据存储为XML格式objRoot.appendChild objChild2
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
"The final step to take care of before saving this document is to add
将HTML表单数据存储为XML格式
"an XML processing instruction. This is necessary so that XML parsers
将HTML表单数据存储为XML格式
"will recognize this document as an XML document.
将HTML表单数据存储为XML格式

将HTML表单数据存储为XML格式
Set objPI = objDom.createProcessingInstruction("xml","vertsion="1.0"")
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
"Call the insertBefore Method of the XMLDOM Object in order to insert
将HTML表单数据存储为XML格式
"the processing instruction before the root element (the zero element
将HTML表单数据存储为XML格式
"in the XMLDOM childNodes Collection).
将HTML表单数据存储为XML格式

将HTML表单数据存储为XML格式
objDom.insertBefore objPI, objDom.childNodes(0)
将HTML表单数据存储为XML格式
将HTML表单数据存储为XML格式
"Calling the Save Method of the XMLDOM Object will save this XML
将HTML表单数据存储为XML格式
"document to your disk drive. In this case, the document will be saved
将HTML表单数据存储为XML格式
"to the "c:" drive and will be named "MyXMLDoc.xml". When saving an
将HTML表单数据存储为XML格式
"XML document, if the file does not exist, it will be created. If it
将HTML表单数据存储为XML格式
"does exist, it will be overwritten.
将HTML表单数据存储为XML格式

将HTML表单数据存储为XML格式
objDom.Save "c:MyXMLDoc.xml"
将HTML表单数据存储为XML格式

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

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

MyXMLDoc.xml:

将HTML表单数据存储为XML格式<?xml version="1.0"?>
将HTML表单数据存储为XML格式
<rootElement>
将HTML表单数据存储为XML格式
<childElement1 />
将HTML表单数据存储为XML格式
<childElement2 />
将HTML表单数据存储为XML格式
</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表单数据存储为XML格式<html>
将HTML表单数据存储为XML格式
<head>
将HTML表单数据存储为XML格式
<title>
将HTML表单数据存储为XML格式Contact Information
将HTML表单数据存储为XML格式
</title>
将HTML表单数据存储为XML格式
</head>
将HTML表单数据存储为XML格式
<body>
将HTML表单数据存储为XML格式
<table border="1">
将HTML表单数据存储为XML格式
<form action="ProcessForm.asp" method="post">
将HTML表单数据存储为XML格式
<tr><td colspan="2">Please input your contact infomation here:</td></tr>
将HTML表单数据存储为XML格式
<tr><td>First Name:</td><td><input type="text" id="FirstName" name="FirstName"></td></tr>
将HTML表单数据存储为XML格式
<tr><td>Last Name: </td><td><input type="text" id="LastName" name="LastName"></td></tr>
将HTML表单数据存储为XML格式
<tr><td>Address #1: </td><td><input type="text" id="Address1" name="Address1"></td></tr>
将HTML表单数据存储为XML格式
<tr><td>Address #2: </td><td><input type="text" id="Address2" name="Address2"></td></tr>
将HTML表单数据存储为XML格式
<tr><td>Phone Number: </td><td><input type="text" id="Phone" name="Phone"></td></tr>
将HTML表单数据存储为XML格式
<tr><td>E-Mail: </td><td><input type="text" id="EMail" name="EMail"></td></tr>
将HTML表单数据存储为XML格式
<tr><td colspan="2" align="center"><input type="submit" id="btnSub" name="btnSub" value="Submit"></td></tr>
将HTML表单数据存储为XML格式
</form>
将HTML表单数据存储为XML格式
</table>
将HTML表单数据存储为XML格式
</body>
将HTML表单数据存储为XML格式
</html>

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

ProcessForm.asp:

将HTML表单数据存储为XML格式<%
将HTML表单数据存储为XML格式
'--------------------------------------------------------------------
将HTML表单数据存储为XML格式'
The "ConvertFormtoXML" Function accepts to parameters.
将HTML表单数据存储为XML格式'
strXMLFilePath - The physical path where the XML file will be saved.
将HTML表单数据存储为XML格式'
strFileName - The name of the XML file that will be saved.
将HTML表单数据存储为XML格式'
--------------------------------------------------------------------
将HTML表单数据存储为XML格式
Function ConvertFormtoXML(strXMLFilePath, strFileName)
将HTML表单数据存储为XML格式
'Declare local variables.
将HTML表单数据存储为XML格式
    Dim objDom
将HTML表单数据存储为XML格式    
Dim objRoot
将HTML表单数据存储为XML格式    
Dim objField
将HTML表单数据存储为XML格式    
Dim objFieldValue
将HTML表单数据存储为XML格式    
Dim objAttID
将HTML表单数据存储为XML格式    
Dim objAttTabOrder
将HTML表单数据存储为XML格式    
Dim objPI
将HTML表单数据存储为XML格式    
Dim x
将HTML表单数据存储为XML格式    
'Instantiate the Microsoft XMLDOM.
将HTML表单数据存储为XML格式
    Set objDom = server.CreateObject("Microsoft.XMLDOM")
将HTML表单数据存储为XML格式    objDom.PreserveWhiteSpace 
= True
将HTML表单数据存储为XML格式    
'Create your root element and append it to the XML document.
将HTML表单数据存储为XML格式
    Set objRoot = objDom.CreateElement("Contact")
将HTML表单数据存储为XML格式    objDom.AppendChild objRoot
将HTML表单数据存储为XML格式    
'Iterate through the Form Collection of the Request Object.
将HTML表单数据存储为XML格式
    For x = 1 To Request.Form.Count
将HTML表单数据存储为XML格式    
'Check to see if "btn" is in the name of the form element.
将HTML表单数据存储为XML格式
    'If it is, then it is a button and we do not want to add it
将HTML表单数据存储为XML格式
    'to the XML document.
将HTML表单数据存储为XML格式
        If Instr(1,Request.Form.Key(x),"btn"= 0 Then
将HTML表单数据存储为XML格式        
'Create an element, "field".
将HTML表单数据存储为XML格式
            Set objField = objDom.CreateElement("Field")
将HTML表单数据存储为XML格式            
'Create an attribute, "ID".
将HTML表单数据存储为XML格式
            Set objAttID = objDom.CreateAttribute("ID")
将HTML表单数据存储为XML格式            
'Set the value of the id attribute equal the the name of
将HTML表单数据存储为XML格式
            'the current form field.
将HTML表单数据存储为XML格式
            objAttID.Text = Request.Form.Key(x)
将HTML表单数据存储为XML格式            
'The setAttributeNode method will append the id attribute
将HTML表单数据存储为XML格式
            'to the field element.
将HTML表单数据存储为XML格式
            objField.SetAttributeNode objAttID
将HTML表单数据存储为XML格式            
'Create another attribute, "taborder". This just orders the
将HTML表单数据存储为XML格式
            'elements.
将HTML表单数据存储为XML格式
            Set objattTabOrder = objDom.createAttribute("taborder")
将HTML表单数据存储为XML格式            
'Set the value of the taborder attribute.
将HTML表单数据存储为XML格式
            objAttTabOrder.Text = x
将HTML表单数据存储为XML格式            
'Append the taborder attribute to the field element.
将HTML表单数据存储为XML格式
            objField.SetAttributeNode objAttTabOrder
将HTML表单数据存储为XML格式            
'Create a new element, "field_value".
将HTML表单数据存储为XML格式
            Set objFieldValue = objDom.CreateElement("FieldValue")
将HTML表单数据存储为XML格式            
'Set the value of the field_value element equal to
将HTML表单数据存储为XML格式
            'the value of the current field in the Form Collection.
将HTML表单数据存储为XML格式
            objFieldValue.Text = Request.Form(x)
将HTML表单数据存储为XML格式            
'Append the field element as a child of the root element.
将HTML表单数据存储为XML格式
            objRoot.AppendChild objField
将HTML表单数据存储为XML格式            
'Append the field_value element as a child of the field elemnt.
将HTML表单数据存储为XML格式
            objField.AppendChild objFieldValue
将HTML表单数据存储为XML格式        
End If
将HTML表单数据存储为XML格式    
Next
将HTML表单数据存储为XML格式    
'Create the xml processing instruction.
将HTML表单数据存储为XML格式
    Set objPI = objDom.CreateProcessingInstruction("xml""version=""1.0""")
将HTML表单数据存储为XML格式    
'Append the processing instruction to the XML document.
将HTML表单数据存储为XML格式
    objDom.InsertBefore objPI, objDom.ChildNodes(0)
将HTML表单数据存储为XML格式    
'Save the XML document.
将HTML表单数据存储为XML格式
    objDom.Save strXMLFilePath & "" & strFileName
将HTML表单数据存储为XML格式    
'Release all of your object references.
将HTML表单数据存储为XML格式
    Set objDom = Nothing
将HTML表单数据存储为XML格式    
Set objRoot = Nothing
将HTML表单数据存储为XML格式    
Set objField = Nothing
将HTML表单数据存储为XML格式    
Set objFieldValue = Nothing
将HTML表单数据存储为XML格式    
Set objAttID = Nothing
将HTML表单数据存储为XML格式    
Set objAttTabOrder = Nothing
将HTML表单数据存储为XML格式    
Set objPI = Nothing
将HTML表单数据存储为XML格式
End Function
将HTML表单数据存储为XML格式
'Do not break on an error.
将HTML表单数据存储为XML格式
On Error Resume Next
将HTML表单数据存储为XML格式
'Call the ConvertFormtoXML function, passing in the physical path to
将HTML表单数据存储为XML格式'
save the file to and the name that you wish to use for the file.
将HTML表单数据存储为XML格式
ConvertFormtoXML "F:\Asp\","Contact.xml"
将HTML表单数据存储为XML格式
'Test to see if an error occurred, if so, let the user know.
将HTML表单数据存储为XML格式'
Otherwise, tell the user that the operation was successful.
将HTML表单数据存储为XML格式
If Err.Number <> 0 then
将HTML表单数据存储为XML格式    Response.Write(
"Errors occurred while saving your form submission.")
将HTML表单数据存储为XML格式
Else
将HTML表单数据存储为XML格式    Response.Write(
"Your form submission has been saved.<br><a href='javascript:history.go(-1)'>Go Back</a>")
将HTML表单数据存储为XML格式
End If
将HTML表单数据存储为XML格式%
>


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

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


Contact.xml:

将HTML表单数据存储为XML格式<?xml version="1.0"?>
将HTML表单数据存储为XML格式
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Dicky (Apple'S Eden) -->
将HTML表单数据存储为XML格式
<contact>
将HTML表单数据存储为XML格式    
<Field ID="FirstName" TabOrder="1">
将HTML表单数据存储为XML格式        
<FieldValue>Dicky</FieldValue>
将HTML表单数据存储为XML格式    
</Field>
将HTML表单数据存储为XML格式    
<Field ID="LastName" TabOrder="2">
将HTML表单数据存储为XML格式        
<FieldValue>Gu</FieldValue>
将HTML表单数据存储为XML格式    
</Field>
将HTML表单数据存储为XML格式    
<Field ID="Address1" TabOrder="3">
将HTML表单数据存储为XML格式        
<FieldValue>ShangHai</FieldValue>
将HTML表单数据存储为XML格式    
</Field>
将HTML表单数据存储为XML格式    
<Field ID="Address2" TabOrder="4">
将HTML表单数据存储为XML格式        
<FieldValue>BeiJing</FieldValue>
将HTML表单数据存储为XML格式    
</Field>
将HTML表单数据存储为XML格式    
<Field ID="Phone" TabOrder="5">
将HTML表单数据存储为XML格式        
<FieldValue>123456</FieldValue>
将HTML表单数据存储为XML格式    
</Field>
将HTML表单数据存储为XML格式    
<Field ID="EMail" TabOrder="6">
将HTML表单数据存储为XML格式        
<FieldValue>AppleBBS@GMail.Com</FieldValue>
将HTML表单数据存储为XML格式    
</Field>
将HTML表单数据存储为XML格式
</contact>


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

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

相关文章:

  • 2021-12-24
  • 2022-01-23
  • 2022-12-23
  • 2021-10-09
  • 2022-12-23
  • 2021-12-28
  • 2021-09-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2021-10-28
相关资源
相似解决方案