分享
 
 
 

给XML文档添加新 ”records”

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

本文是在ASP状态下熟练使用XML 系列文章的第三部份。

本文所举的例子与保存HTML格式数据至XML类似。在以往当表格被提交后,我们通常会创建一个新的文档,现在只要文档已经存在,那么直接添加就可以了。此种技术的使用与创建基本数据类似。

在前面的文章里,我已经演示了如何使用XMLDOM。因此,我们可以直接进入本文的示例。

我们需要考虑的第一件事是我们将用于添加新"记录"的HTML 表单。在"将HTML表单数据保存至XML"例子中我们已使用过此表单,只是更改了文件名,但代码是相同的。

AddContact.html:

<html>

<head>

<title> Contact Information </title>

</head>

<body>

<form action="processAdd.asp" method="post">

<h3>Enter your contact information</h3>

First Name:

<input type="text" id="firstName" name="firstName"><br> Last Name:

<input type="text" id="lastName" name="lastName"><br> Address #1:

<input type="text" id="address1" name="address1"><br> Address #2:

<input type="text" id="address2" name="address2"><br> Phone Number:

<input type="text" id="phone" name="phone"><br> E-Mail:

<input type="text" id="email" name="email"><br>

<input type="submit" id="btnSub" name="btnSub" value="Submit"><br>

</form>

</body>

</html>

我们设置此HTML表单是来处理ADD。ASP的。这里的ASP 页面具有检测XML.文件及ROLODEX.XML是否存在的功能。如果它们确实存在,ASP则会在文件上附加新的条目,如果文件不存在,则需要创建。

Process Add.asp:

<%

'--------------------------------------------------------------------

'The "addNewContacttoXML" Function accepts two parameters.

'strXMLFilePath - The physical path where the XML file will be saved.

'strFileName - The name of the XML file that will be saved.

'--------------------------------------------------------------------

Function addNewContacttoXML(strXMLFilePath, strFileName)

'Declare local variables.

Dim objDom

Dim objRoot

Dim objRecord

Dim objField

Dim objFieldValue

Dim objattID

Dim objattTabOrder

Dim objPI

Dim blnFileExists

Dim x

'Instantiate the Microsoft XMLDOM.

Set objDom = server.CreateObject("Microsoft.XMLDOM")

objDom.preserveWhiteSpace = True

'Call the Load Method of the XMLDOM Object. The Load ethod has a

'boolean return value indicating whether or not the file could be

'loaded. If the file exists and loads it will return true, otherwise,

'it will return false.

blnFileExists = objDom.Load(strXMLFilePath & "\" & strFileName)

'Test to see if the file loaded successfully.

If blnFileExists = True Then

'If the file loaded set the objRoot Object equal to the root element

'of the XML document.

Set objRoot = objDom.documentElement Else

'Create your root element and append it to the XML document.

Set objRoot = objDom.createElement("rolodex")

objDom.appendChild objRoot

End If

'Create the new container element for the new record.

Set objRecord = objDom.createElement("contact")

objRoot.appendChild objRecord

'Iterate through the Form Collection of the Request Object.

For x = 1 To Request.Form.Count

'Check to see if "btn" is in the name of the form element. If it is,

'then it is a button and we do not want to add it to the XML

'document".

If instr(1,Request.Form.Key(x),"btn") = 0 Then

'Create an element, "field".

Set objField = objDom.createElement("field")

'Create an attribute, "id".

Set objattID = objDom.createAttribute("id")

'Set the value of the id attribute equal the the name of the current

'form field.

objattID.Text = Request.Form.Key(x)

'The setAttributeNode method will append the id attribute to the

'field element. objField.setAttributeNode objattID

'Create another attribute, "taborder". This just orders the

'elements.

Set objattTabOrder = objDom.createAttribute("taborder")

'Set the value of the taborder attribute.

objattTabOrder.Text = x

'Append the taborder attribute to the field element.

'objField.setAttributeNode objattTabOrder

'Create a new element, "field_value".

Set objFieldValue = objDom.createElement("field_value")

'Set the value of the field_value element equal to the value of the

'current field in the Form Collection.

objFieldValue.Text = Request.Form(x)

'Append the field element as a child of the new record container

'element, contact. objRecord.appendChild objField

'Append the field_value element as a child of the field element.

objField.appendChild objFieldValue

End If

Next

'Check once again to see if the file loaded successfully. If it did

'not, that means we are creating a new document and need to be sure to

'insert the XML processing instruction.

If blnFileExists = False then

'Create the xml processing instruction.

Set objPI = objDom.createProcessingInstruction("xml", "version='1.0'")

'Append the processing instruction to the XML document.

objDom.insertBefore objPI, objDom.childNodes(0)

End If

'Save the XML document.

objDom.save strXMLFilePath & "\" & strFileName

'Release all of your object references.

Set objDom = Nothing

Set objRoot = Nothing

Set objRecord = Nothing

Set objField = Nothing

Set objFieldValue = Nothing

Set objattID = Nothing

Set objattTabOrder = Nothing

Set objPI = NothingEnd

Function

'Do not break on an error.

On Error Resume Next

'Call the addNewContacttoXML function, passing in the physical path to

'save the file to and the name that you wish to use for the file.

addNewContacttoXML "c:","rolodex.xml"

'Test to see if an error occurred, if so, let the user know.

'Otherwise, tell the user that the operation was successful.

If err.number <> 0 then

Response.write("Errors occurred while saving your form submission.")

Else

Response.write("Your form submission has been saved.")

End If

%>

||||||如果你已经读过关于"将HTML 表单数据保存至XML格式"的文章,你会注意到附加到将HTML数据扩展到XML文件的代码与HTML数据扩展到新文档的代码基本上是一致的。但是这里还是有两个主要的不同点:

'Call the Load Method of the XMLDOM Object. The Load Method has a

'boolean return value indicating whether or not the file could be

'loaded. If the file exists and loads it will return true, otherwise,

'it will return false.

blnFileExists = objDom.Load(strXMLFilePath & "\" & strFileName)

'Test to see if the file loaded successfully.

If blnFileExists = True Then

'If the file loaded set the objRoot Object equal to the root element

'of the XML document.

Set objRoot = objDom.documentElement

Else

'Create your root element and append it to the XML document.

Set objRoot = objDom.createElement("contact")

objDom.appendChild objRoot

End If

本节的代码来自addNewContacttoXML 功能。因为我们不可能每次都新建一个文件,所以我们改为保存CONTACT。如果能够LOAD此文件呢,我们则获得了这个XML文档的根元素;如果不能够呢,那么我们就假设它不存在并创建一个新的要元素并将它附加到XML文档上。

另外一个主要区别在于:当我们对文件进行二次检测,是否成功的LOAD,这样我们可以决定是否需要加上 一条处理指令。如果文件存在,我们就不需要加上这条指令。但是,如果创建了一个新的文件,那么则一定得加上这条处理指令。

'Check once again to see if the file loaded successfully. If it did

'not, that means we are creating a new document and need to be sure to

'insert the XML processing instruction.

If blnFileExists = False then

'Create the xml processing instruction.

Set objPI = objDom.createProcessingInstruction("xml", "version='1.0'")

'Append the processing instruction to the XML document.

objDom.insertBefore objPI, objDom.childNodes(0)

End If

除开以上两点不同之处外,你可以发现 保存数据至新文件的代码实际上是与 附加新record至存在文件的代码是一样的。我们创建一个新的element, contact CONTAINER,以便能容下每个新添的RECORD。代码将会在Form Collection of the Request Objec中不断重复以创建适合的XML节点并将这些节点值设置得与当前Form Field.一样。

如以往一样,我推荐大家复制以上代码至你的 服务器上并运行。希望以上举例会对你有所帮助。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有