Usually, we save data in databases. However, if we want to make the data more portable, we can store the data in an XML file.
通常,我们把数据保存在数据库里。然而,如果想让数据更易于传送,可以把数据存在XML文件里。
Create and Save an XML File
创建和保存XML文件
Storing data in XML files is useful if the data is to be sent to applications on non-Windows platforms. Remember that XML is portable across all platforms and the data will not need to be converted!
如果数据要被发送到非Windows平台上,那么把数据存在XML文件里是非常有用的。要记得XML在所有平台上都可以传送数据,而且数据是不需要转换的。
First we will learn how to create and save an XML file. The XML file below will be named "test.xml" and will be stored in the c directory on the server. We will use ASP and Microsoft's XMLDOM object to create and save the XML file:
首先我们要学习如何创建和保存一份XML文件。下面的XML文件将被命名为"test.xml",并被存在服务器的C目录区域下,我们将用ASP 和Microsoft's XMLDOM来创建和保存XML文件:
<% Dim xmlDoc, rootEl, child1, child2, p 'Create an XML document Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") 'Create a root element and append it to the document Set rootEl = xmlDoc.createElement("root") xmlDoc.appendChild rootEl 'Create and append child elements Set child1 = xmlDoc.createElement("child1") Set child2 = xmlDoc.createElement("child2") rootEl.appendChild child1 rootEl.appendChild child2 'Add an XML processing instruction 'and insert it before the root element Set p=xmlDoc.createProcessingInstruction("xml","version='1.0'") xmlDoc.insertBefore p,xmlDoc.childNodes(0) 'Save the XML file to the c directory xmlDoc.Save "c:/test.xml" %> |
If you open the saved XML file it will look something like this ("test.xml"):
如果你打开保存好的XML文件会看到象这样的东西:
<?xml version="1.0"?> <root> <child1 /> <child2 /> </root> |
Real Form Example
实际表单举例
Now, we will look at a real HTML form example.
现在,我们看一下一个实际的HTML表单的例子。
We will first look at the HTML form that will be used in this example: The HTML form below asks for the user's name, country, and e-mail address. This information will then be written to an XML file for storage.
首先,我们看看这个例子中HTML表单的使用方法:下面的HTML表单要用户的姓名,国籍和e-mail地址,这个信息会写到XML文件中并被储存起来。
"customers.htm":
<html> <body> <form action="saveForm.asp" method="post"> <p><b>Enter your contact information</b></p> First Name: <input type="text" ><br /> Last Name: <input type="text" ><br /> Country: <input type="text" ><br /> Email: <input type="text" ><br /> <input type="submit" value="Submit"> <input type="reset" value="Reset"> </form> </body> </html> |
The action for the HTML form above is set to "saveForm.asp". The "saveForm.asp" file is an ASP page that will loop through the form fields and store their values in an XML file:
对上面HTML表单的action已经设置为"saveForm.asp"。"saveForm.asp"文件是一份ASP页面,会在整个表格区域进行循环,并把它们的值存入XML文件里:
<% dim xmlDoc dim rootEl,fieldName,fieldValue,attID dim p,i 'Do not stop if an error occurs On Error Resume Next Set xmlDoc = server.CreateObject("Microsoft.XMLDOM") xmlDoc.preserveWhiteSpace=true 'Create a root element and append it to the document Set rootEl = xmlDoc.createElement("customer") xmlDoc.appendChild rootEl 'Loop through the form collection for i = 1 To Request.Form.Count 'Eliminate button elements in the form if instr(1,Request.Form.Key(i),"btn_")=0 then 'Create a field and a value element, and an id attribute Set fieldName = xmlDoc.createElement("field") Set fieldValue = xmlDoc.createElement("value") Set attID = xmlDoc.createAttribute("id") 'Set the value of the id attribute equal to the name of 'the current form field attID.Text = Request.Form.Key(i) 'Append the id attribute to the field element fieldName.setAttributeNode attID 'Set the value of the value element equal to 'the value of the current form field fieldValue.Text = Request.Form(i) 'Append the field element as a child of the root element rootEl.appendChild fieldName 'Append the value element as a child of the field element fieldName.appendChild fieldValue end if next 'Add an XML processing instruction 'and insert it before the root element Set p = xmlDoc.createProcessingInstruction("xml","version='1.0'") xmlDoc.insertBefore p,xmlDoc.childNodes(0) 'Save the XML file xmlDoc.save "c:/Customer.xml" 'Release all object references set xmlDoc=nothing set rootEl=nothing set fieldName=nothing set fieldValue=nothing set attID=nothing set p=nothing 'Test to see if an error occurred if err.number<>0 then response.write("Error: No information saved.") else response.write("Your information has been saved.") end if %> |
Note: If the XML file name specified already exists, it will be overwritten!
注意: 如果指定的XML文件名已经存在,它将会被覆盖。
The XML file that will be produced by the code above will look something like this ("Customer.xml"):
通过上述代码书写的XML文件,看起来就像这样("Customer.xml"):
<?xml version="1.0" ?> <customer> <field > <value>Hege</value> </field> <field > <value>Refsnes</value> </field> <field > <value>Norway</value> </field> <field > <value>mymail@myaddress.com</value> </field> </customer> |