newbie29
asked on
modify script to handle child nodes
Hello,
I have a xml with quite a few child nodes, I normally have a flat xml file and whenever I would need to update xml fields
I would easily pass mulitple fields and values to the proxy.asp to process all the fields separated by "|"
The problem is If I would need to add extra node in a specific child node.
Just to make my point clear, say I have the following xml file
<record>
<fname> john </fname>
<lname> smith</lname>
<book>
<book_title> adventure </book_title>
<book_price> 343.00 </book_price>
</book>
<email_address> email@emaill.com</email_ad dress>
<contact> 234234 </contact>
</record>
I have a function in ASP to deal for the flat xml file but I am confused to update/modify the existing script
to handle the above situation, for example, if i want to add extra node in <book> like <book_last_updated>
The request I am doing is through ajax and following is the ajax syntax I have
$.ajax({
type: "POST",
url: "some.asp",
data: "action=save&uid="+id +"&values="+v+"|&fields=" + escape("book/bool_title|bo ok/book_la st_updated ")
Please also have ASP script attached
Your help is much appreciated...
Regards
sam
I have a xml with quite a few child nodes, I normally have a flat xml file and whenever I would need to update xml fields
I would easily pass mulitple fields and values to the proxy.asp to process all the fields separated by "|"
The problem is If I would need to add extra node in a specific child node.
Just to make my point clear, say I have the following xml file
<record>
<fname> john </fname>
<lname> smith</lname>
<book>
<book_title> adventure </book_title>
<book_price> 343.00 </book_price>
</book>
<email_address> email@emaill.com</email_ad
<contact> 234234 </contact>
</record>
I have a function in ASP to deal for the flat xml file but I am confused to update/modify the existing script
to handle the above situation, for example, if i want to add extra node in <book> like <book_last_updated>
The request I am doing is through ajax and following is the ajax syntax I have
$.ajax({
type: "POST",
url: "some.asp",
data: "action=save&uid="+id +"&values="+v+"|&fields=" + escape("book/bool_title|bo
Please also have ASP script attached
Your help is much appreciated...
Regards
sam
ASKER
Can someone please help me on this?
Please tell me how to find "book_feature" node from the xml document after loading it.
Set oNode = oXMLDoc.DocumentElement.se
If you know the path to the parent of the node you want to attach the new node to. So, on your example you would need:
Set oNode = oXMLDoc.DocumentElement.se lectSingle Node("//re cord/book" )
Set newNode = oXMLDoc.createElement("boo k_feature" )
newNode.text="awesome"
oNode.appendChild( newNode )
Set oNode = oXMLDoc.DocumentElement.se
Set newNode = oXMLDoc.createElement("boo
newNode.text="awesome"
oNode.appendChild( newNode )
ASKER
hello hielo,
the problem is that I would never able to fix the node here
Set oNode = oXMLDoc.DocumentElement.se lectSingle Node("//re cord/book" )
Because the same script is also been used to update
Set oNode = oXMLDoc.DocumentElement.se lectSingle Node("//re cord)
I was thinking that using the same I can pass the complete node name but that does not seems to have worked for me ...
the script is yet another one ... but unable to get my head over it
the problem is that I would never able to fix the node here
Set oNode = oXMLDoc.DocumentElement.se
Because the same script is also been used to update
Set oNode = oXMLDoc.DocumentElement.se
I was thinking that using the same I can pass the complete node name but that does not seems to have worked for me ...
the script is yet another one ... but unable to get my head over it
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
'oXMLDoc.preserveWhiteSpace = true
oXMLDoc.Async = False
blob = readFile(sFullPath)
'blob = UTF8ToUniStr(blob)
oXMLDoc.LoadXml blob
' mp create list of files that have change for the DB Make Live function
x = UpdateThisFile(sFullPath, RDBM_DB_FOLDER & "\edited\FilesToIndex.dat")
oXMLDoc.Save sTempFile 'Save temp file to 'edited' folder.
sModifiedBy = "CMS" 'TODO
'The XML document containing the definitions of the fields to be edited.
Set oXMLFieldDoc = CreateObject("MSXML2.DOMDocument")
oXMLFieldDoc.Async = False
oXMLFieldDoc.Load ADMIN_WWW_FOLDER & "\include\" & RDBM_FIELD_DEF_FILE
'Retrieve data for all fields.
For Each oFieldDef In oXMLFieldDoc.DocumentElement.SelectNodes("field")
sType = oFieldDef.SelectSingleNode("type").Text
sRefNo = oFieldDef.SelectSingleNode("name").Text
'Set parent node.
If InStr(sRefNo,"/") Then
sParent=Left(sRefNo,InStr(sRefNo,"/")-1)
Set oNode = oXMLDoc.DocumentElement.SelectSingleNode(sParent)
If oNode Is Nothing Then
'Parent node is not present - create.
Set oNode = oXMLDoc.CreateNode(1,sParent,"")
oXMLDoc.DocumentElement.AppendChild(oNode)
End If
sName = Mid(sRefNo,InStr(sRefNo,"/")+1)
Else
Set oNode = oXMLDoc.DocumentElement
sName = sRefNo
End If
'Set node.
Set oNodeList = oNode.SelectNodes(sName)
If Not oNodeList Is Nothing Then
'Delete existing text data.
For Each oTmp In oNodeList
oNode.RemoveChild oTmp
'For i = 0 To oTextNode.ChildNodes.Length - 1
' oTextNode.RemoveChild oTextNode.ChildNodes.Item(i)
'Next
Next
End If
If Request.Form("fv_" & sName) <> "" Then
Set oTextNode = oXMLDoc.CreateNode(1,sName,"")
oNode.AppendChild(oTextNode)
'Add the new data.
UpdateText oXMLDoc, oTextNode, sType, "fv_" & sName
End If
Next
'response.write sXMLFile
'response.end
'Update last modified information.
Set oTextNode = oXMLDoc.DocumentElement.SelectSingleNode("last_updated")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"last_updated","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = Year(Now()) & PadZ(Month(Now()),2) & PadZ(Day(Now()),2) & "|" & PadZ(Hour(Now()),2) & ":" & PadZ(Minute(Now()),2) & ":" & PadZ(Second(Now()),2)
Set oTextNode = oXMLDoc.DocumentElement.SelectSingleNode("last_updated_by")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"last_updated_by","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = sModifiedBy
'' Sort the XML. Beware, if you are relying on certain fields remaining as CDATA Elements then
'' You will need to specify Element names in the SortNode Function below..
'' SortNodeCDATAElements are set in admin_def
x = SortNode(oXMLDoc, "a", SortNodeCDATAElements)
oXMLDoc.Save sXMLFile
ASKER
All what I have to do using the script above is update the xml file with the data recieved, the following 2 variable storing the data from the previous page
ajax Request:
sField ="book/book_title|book_las t_updated)
sValue ="hielo|20080410"
proxy page
sField = Request("fields")
sValue = Request("data")
ajax Request:
sField ="book/book_title|book_las
sValue ="hielo|20080410"
proxy page
sField = Request("fields")
sValue = Request("data")
>>Because the same script is also been used to update
What does that mean?
>>I was thinking that using the same I can pass the complete node name
You can pass the complete path to the node you want to attache a new node to. To clarify, if you want to attach a new node to <book>, you need to suppy the path to the book node.
What does that mean?
>>I was thinking that using the same I can pass the complete node name
You can pass the complete path to the node you want to attache a new node to. To clarify, if you want to attach a new node to <book>, you need to suppy the path to the book node.
ASKER
for now I am only updating book node but in future if someone wants to add another set of nodes then I would have to change the script again to read something else....
hielo,
can you please have a look to the script attached and please modify it according to my requirement
to fetch data from sField and sValue and update the xml file
-------------------------- ---------- ---------- ---------- ---------- ---------- ----
sField ="book/book_title|book_las t_updated)
sValue ="hielo|20080410"
proxy page
sField = Request("fields")
sValue = Request("data")
-------------------------- ---------- ---------- ---------- ---------- ---------- ---
hope you understand what I am after ..!
thanks for your help
hielo,
can you please have a look to the script attached and please modify it according to my requirement
to fetch data from sField and sValue and update the xml file
--------------------------
sField ="book/book_title|book_las
sValue ="hielo|20080410"
proxy page
sField = Request("fields")
sValue = Request("data")
--------------------------
hope you understand what I am after ..!
thanks for your help
Set oXMLFieldDoc = CreateObject("MSXML2.DOMDocument")
oXMLFieldDoc.Async = False
oXMLFieldDoc.Load "test.xml"
'Retrieve data for all fields.
For Each oFieldDef In oXMLFieldDoc.DocumentElement.SelectNodes("field")
sType = oFieldDef.SelectSingleNode("type").Text
sRefNo = oFieldDef.SelectSingleNode("name").Text
'Set parent node.
If InStr(sRefNo,"/") Then
sParent=Left(sRefNo,InStr(sRefNo,"/")-1)
Set oNode = oXMLDoc.DocumentElement.SelectSingleNode(sParent)
If oNode Is Nothing Then
'Parent node is not present - create.
Set oNode = oXMLDoc.CreateNode(1,sParent,"")
oXMLDoc.DocumentElement.AppendChild(oNode)
End If
sName = Mid(sRefNo,InStr(sRefNo,"/")+1)
Else
Set oNode = oXMLDoc.DocumentElement
sName = sRefNo
End If
'Set node.
Set oNodeList = oNode.SelectNodes(sName)
If Not oNodeList Is Nothing Then
'Delete existing text data.
For Each oTmp In oNodeList
oNode.RemoveChild oTmp
'For i = 0 To oTextNode.ChildNodes.Length - 1
' oTextNode.RemoveChild oTextNode.ChildNodes.Item(i)
'Next
Next
End If
If Request.Form("fv_" & sName) <> "" Then
Set oTextNode = oXMLDoc.CreateNode(1,sName,"")
oNode.AppendChild(oTextNode)
'Add the new data.
UpdateText oXMLDoc, oTextNode, sType, "fv_" & sName
End If
Next
'response.write sXMLFile
'response.end
'Update last modified information.
Set oTextNode = oXMLDoc.DocumentElement.SelectSingleNode("last_updated")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"last_updated","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = Year(Now()) & PadZ(Month(Now()),2) & PadZ(Day(Now()),2) & "|" & PadZ(Hour(Now()),2) & ":" & PadZ(Minute(Now()),2) & ":" & PadZ(Second(Now()),2)
Set oTextNode = oXMLDoc.DocumentElement.SelectSingleNode("last_updated_by")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"last_updated_by","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = sModifiedBy
oXMLDoc.Save sXMLFile
ASKER
<%=Right(fv("eh_review"), len(fv("eh_review")) - len(sDescription)) %>
can you please copy above and paste it in here
https://www.experts-exchange.com/questions/23307602/toggle-script-to-apply-in-the-dynamic-content.html
can you please copy above and paste it in here
https://www.experts-exchange.com/questions/23307602/toggle-script-to-apply-in-the-dynamic-content.html
If I understand you correctly this:
>>sField ="book/book_title|book_las t_updated)
is meant to create a node named book_last_updated and append it to book/book_title
but what is the significance of this:
>>sValue ="hielo|20080410"
>>sField ="book/book_title|book_las
is meant to create a node named book_last_updated and append it to book/book_title
but what is the significance of this:
>>sValue ="hielo|20080410"
ASKER
sField = "book/book_title|book/last _updated"
sValue ="hielo|20080410"
sorry there was a typo earlier, sField contains the <tag> name and sValue hold their values
for example if you see the
http://213.253.134.6/dtsearchk/pubnews-previews/bib/data/9781862305076.xml
i am after <ehaus> node, it contains feature where i need to store Y or N and need to create another node called eh_last_modified and add the current date to it ...
sValue ="hielo|20080410"
sorry there was a typo earlier, sField contains the <tag> name and sValue hold their values
for example if you see the
http://213.253.134.6/dtsearchk/pubnews-previews/bib/data/9781862305076.xml
i am after <ehaus> node, it contains feature where i need to store Y or N and need to create another node called eh_last_modified and add the current date to it ...
ASKER
Is there any way I can give you double points ? If yes the I will for this question.
I manage to make some script here which load the current (9781862305076.xml) file and another file (xml file 2) to get the extra fields name to append in the 9781862305076.xml,
if you could please go though this code and see if what i am doing is correct? i have not tested it but i think it might have errors in it....
xml file 1:
http://213.253.134.6/dtsearchk/pubnews-previews/bib/data/9781862305076.xml
xml file 2:
<?xml version="1.0" encoding="UTF-8" ?>
<fieldlist>
<field primarykey="Y">
<name>ref_no</name>
<friendly_name>Reference No</friendly_name>
<type>TEXT</type>
<visible>N</visible>
<editable>N</editable>
</field>
<field>
<name>ctitle</name>
<friendly_name>Combined Title</friendly_name>
<type>TEXT</type>
<visible>Y</visible>
<editable>N</editable>
</field>
<field>
<name>ehaus/eh_review</nam
<friendly_name>My Review Text</friendly_name>
<type>HTML</type>
<visible>Y</visible>
<editable>Y</editable>
</field>
<field>
<name>ehaus/eh_cat</name>
<friendly_name>Category</f
<type>TEXT</type>
<visible>Y</visible>
<editable>Y</editable>
</field>
<field>
<name>ehaus/eh_cat_code</n
<friendly_name>Category Code</friendly_name>
<type>TEXT</type>
<visible>Y</visible>
<editable>Y</editable>
</field>
<field>
<name>ehaus/eh_feature</na
<friendly_name>Special feature</friendly_name>
<type>BOOLEAN</type>
<visible>Y</visible>
<editable>Y</editable>
</field>
<field>
<name>ehaus/eh_date_loaded
<friendly_name>Date Loaded</friendly_name>
<type>TEXT</type>
<visible>Y</visible>
<editable>N</editable>
</field>
<field>
<name>ehaus/eh_sort_featur
<friendly_name>Sort Feature</friendly_name>
<type>TEXT</type>
<visible>Y</visible>
<editable>N</editable>
</field>
<field>
<name>vx_first_name</name>
<friendly_name></friendly_
<type>TEXT</type>
<visible>N</visible>
<editable>N</editable>
</field>
</fieldlist>
' ******************************************************************************
Function SaveFields()
Dim sDisplayMode
Dim fso,oFiles,oFile,sFilename,sText
Dim sLangCode,sLanguageName,sTextTag,sISBNList,sTemplate,sSecondLevel
Dim sRefNo,sName,sFriendlyName,sType,sModifiedDate,sModifiedBy
Dim bVisible,bEditable
Dim oXMLFieldDefs,oNode,oNodeList,oTmp
'response.write oXMLFieldDefs.parseerror.reason
'Retrieve the XML document containing the actual data.
sFilename = sKey & ".xml"
if sFullPath = "" Then
' try the root data folder which is where new Records will be created
' This is in case the index is not up to date.
sFullPath = RDBM_DB_FOLDER & "\data\" & sFilename
End If
'/mp oXMLDoc
sXMLFile = sFullPath
Set oXMLDoc = createObject("MSXML2.DOMDocument")
oXMLDoc.async = false
oXMLDoc.Load sFullPath
If InfiniteUndo = True Then
FileUndo = sFilename & "_" & Year(Now()) & "-" & PadZ(Month(Now()),2) & "-" & PadZ(Day(Now()),2) & "-" & PadZ(Hour(Now()),2) & ".xml"
Else
FileUndo = sFilename
End If
sTempFile = RDBM_DB_FOLDER & "\edited\" & FileUndo
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
'oXMLDoc.preserveWhiteSpace = true
oXMLDoc.Async = False
blob = readFile(sFullPath)
'blob = UTF8ToUniStr(blob)
oXMLDoc.LoadXml blob
' mp create list of files that have change for the DB Make Live function
x = UpdateThisFile(sFullPath, RDBM_DB_FOLDER & "\edited\FilesToIndex.dat")
oXMLDoc.Save sTempFile 'Save temp file to 'edited' folder.
sModifiedBy = "AJAX"
'The XML document containing the definitions of the fields to be edited.
Set oXMLFieldDoc = CreateObject("MSXML2.DOMDocument")
oXMLFieldDoc.Async = False
oXMLFieldDoc.Load ADMIN_WWW_FOLDER & "\include\" & xmlfile2
For Each oFieldDef In oXMLFieldDoc.DocumentElement.SelectNodes("field")
sType = oFieldDef.SelectSingleNode("type").Text
sRefNo = oFieldDef.SelectSingleNode("name").Text
'Set parent node.
If InStr(sRefNo,"/") Then
sParent=Left(sRefNo,InStr(sRefNo,"/")-1)
Set oNode = oXMLDoc.DocumentElement.SelectSingleNode(sParent)
If oNode Is Nothing Then
'Parent node is not present - create.
Set oNode = oXMLDoc.CreateNode(1,sParent,"")
oXMLDoc.DocumentElement.AppendChild(oNode)
End If
sName = Mid(sRefNo,InStr(sRefNo,"/")+1)
Else
Set oNode = oXMLDoc.DocumentElement
sName = sRefNo
End If
'Set node.
Set oNodeList = oNode.SelectNodes(sName)
If Not oNodeList Is Nothing Then
'Delete existing text data.
For Each oTmp In oNodeList
oNode.RemoveChild oTmp
Next
End If
If sName <> "" Then
Set oTextNode = oXMLDoc.CreateNode(1,sName,"")
oNode.AppendChild(oTextNode)
'Add the new data.
oTextNode.Text = sName
End If
Next
'Update last modified information.
Set oTextNode = oXMLFieldDoc.DocumentElement.SelectSingleNode("eh_last_updated")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"eh_last_updated","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = Year(Now()) & PadZ(Month(Now()),2) & PadZ(Day(Now()),2)
'Update last modified information.
Set oTextNode = oXMLDoc.DocumentElement.SelectSingleNode("last_updated")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"last_updated","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = Year(Now()) & PadZ(Month(Now()),2) & PadZ(Day(Now()),2) & "|" & PadZ(Hour(Now()),2) & ":" & PadZ(Minute(Now()),2) & ":" & PadZ(Second(Now()),2)
Set oTextNode = oXMLDoc.DocumentElement.SelectSingleNode("last_updated_by")
If oTextNode Is Nothing Then
Set oTextNode = oXMLDoc.CreateNode(1,"last_updated_by","")
oXMLDoc.DocumentElement.AppendChild(oTextNode)
End If
oTextNode.Text = sModifiedBy
oXMLDoc.Save sXMLFile
Response.write WriteResponse(0)
'Update the index for that record.
If ReIndexRDBMOnUpdate = True Then
sFileList = CreateIndexFileList(sFullPath & vbNewLine)
'UpdatePartialIndex RDBM_INDEX_FOLDER, sFileList
UpdateIndex RDBM_INDEX_FOLDER
End If
' Also no sort..
End Function
>>the problem is that I would never able to fix the node here
>>Set oNode = oXMLDoc.DocumentElement.se lectSingle Node("//re cord/book" )
>>Because the same script is also been used to update
But you can do:
'obtain reference to node you want to update
Set oNode = oXMLDoc.DocumentElement.se lectSingle Node("//re cord/ehaus /eh_featur e")
' update the value to Y
oNode.text="Y"
'create new node
Set dynamicNode = oXMLDoc.createElement("eh_ last_modif ied")
'add value to new node
dynamicNode.text="today"
'append it to ehaus node via the parent of eh_feature
oNode.parentNode.appendChi ld(dynamic Node)
>>Set oNode = oXMLDoc.DocumentElement.se
>>Because the same script is also been used to update
But you can do:
'obtain reference to node you want to update
Set oNode = oXMLDoc.DocumentElement.se
' update the value to Y
oNode.text="Y"
'create new node
Set dynamicNode = oXMLDoc.createElement("eh_
'add value to new node
dynamicNode.text="today"
'append it to ehaus node via the parent of eh_feature
oNode.parentNode.appendChi
>>Is there any way I can give you double points
No. The maximum is 500 and an A grade. You could open a different problem, but see if my previous suggestion helps you out. I believe that is what you are after.
No. The maximum is 500 and an A grade. You could open a different problem, but see if my previous suggestion helps you out. I believe that is what you are after.
ASKER
Hielo,
will this Set dynamicNode = oXMLDoc.createElement("eh_ last_modif ied") be created under
//record/ehaus/
or would i need to specify
Set dynamicNode = oXMLDoc.createElement("//r ecord/ehau s/eh_last_ modified")
will this Set dynamicNode = oXMLDoc.createElement("eh_
//record/ehaus/
or would i need to specify
Set dynamicNode = oXMLDoc.createElement("//r
ASKER
ok thanks
can we not set selectsinglenode to something like dynamic, so that any other node from ehaus/ should be able to use it please...
can we not set selectsinglenode to something like dynamic, so that any other node from ehaus/ should be able to use it please...
Set featureNode = oXMLDoc.DocumentElement.selectSingleNode("//record/ehaus/eh_feature")
featureNode.text=sValue
Set oUpdateNode = oXMLDoc.DocumentElement.SelectSingleNode("//record/ehaus/eh_last_updated")
If oUpdateNode Is Nothing Then
Set oUpdateNode = oXMLDoc.CreateNode(1,"eh_last_updated","")
oXMLDoc.DocumentElement.AppendChild(oUpdateNode)
End If
oUpdateNode.Text = Year(Now()) & PadZ(Month(Now()),2) & PadZ(Day(Now()),2) & "|" & PadZ(Hour(Now()),2) & ":" & PadZ(Minute(Now()),2) & ":" & PadZ(Second(Now()),2)
ASKER
if i do this,
Set featureNode = oXMLDoc.DocumentElement.Se lectSingle Node("//re cord/ehaus /eh_featur e")
If featureNode Is Nothing Then
Set featureNode = oXMLDoc.CreateNode(1,"//re cord/ehaus /eh_featur e","")
oXMLDoc.DocumentElement.Ap pendChild( featureNod e)
End If
featureNode.Text = sValue
i am getting an error, please advice
Set featureNode = oXMLDoc.DocumentElement.Se
If featureNode Is Nothing Then
Set featureNode = oXMLDoc.CreateNode(1,"//re
oXMLDoc.DocumentElement.Ap
End If
featureNode.Text = sValue
i am getting an error, please advice
<font face="Arial" size=2>
<p>msxml3.dll</font> <font face="Arial" size=2>error '80004005'</font>
<p>
<font face="Arial" size=2>This name may not contain the '/' character:
-->/<--/record/ehaus/eh_feature
</font>
<p>
ASKER
and if i remove from createnode ... it is keeping adding extra node to the root
Set featureNode = oXMLDoc.DocumentElement.Se lectSingle Node("//re cord/ehaus /eh_featur e")
If featureNode Is Nothing Then
Set featureNode = oXMLDoc.CreateNode(1,"eh_f eature","" )
oXMLDoc.DocumentElement.Ap pendChild( featureNod e)
End If
featureNode.Text = sValue
Set featureNode = oXMLDoc.DocumentElement.Se
If featureNode Is Nothing Then
Set featureNode = oXMLDoc.CreateNode(1,"eh_f
oXMLDoc.DocumentElement.Ap
End If
featureNode.Text = sValue
<ehaus>
<eh_date_loaded>20080410</eh_date_loaded>
</ehaus>
<eh_feature>Y</eh_feature>
<eh_feature>N</eh_feature>
<eh_feature>Y</eh_feature>
<eh_feature>N</eh_feature>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
please see this
https://www.experts-exchange.com/questions/23312811/can-we-make-this-more-dynamic.html
thanks for your time
https://www.experts-exchange.com/questions/23312811/can-we-make-this-more-dynamic.html
thanks for your time
ASKER
<%
Dim record
Record = "record"
sKey = Request("k")
sDBM = Request.QueryString("dbm")
sField = Request("fields")
sValue = Request("values")
If Lcase(request("action")) = "save" Then
SaveFields()
End If
%>
<%
' **************************
Function SaveFields()
Dim sKey,sDisplayMode
Dim fso,oFiles,oFile,sFilename
Dim sLangCode,sLanguageName,sT
Dim sRefNo,sName,sFriendlyName
Dim bVisible,bEditable
Dim oXMLFieldDefs,oNode,oNodeL
'Get the key.
sFilename = sKey & ".xml"
sFullPath = FindFilePath(sKey, RDBM_INDEX_FOLDER)
if sFullPath = "" Then
' try the root data folder which is where new Records will be created
' This is in case the index is not up to date.
sFullPath = RDBM_DB_FOLDER & "\data\" & sFilename
End If
'/mp oXMLDoc
Set oXMLDoc = createObject("MSXML2.DOMDo
oXMLDoc.async = false
oXMLDoc.Load sFullPath
aFields = Split(sField, "|")
aValues = Split(sValue, "|")
' This won't handle pipe separated multi-instance fields..
' Also - doesn't save tmp copy to Edited folder..
For i = 0 To UBound(aFields)
Set oNode = oXMLDoc.DocumentElement.se
If Not oNode Is Nothing Then
oNode.text = aValues(i)
Else
Set oNode = oXMLDoc.createElement(aFie
oNode.text = aValues(i)
oXMLDoc.documentElement.ap
End if
Next
' Also no sort..
oXMLDoc.Save sFullPath
'Response.Write Replace(Replace(sField, "_", " "), "|", ", ") & " updated successfully."
'' Finally consider re-indexing as well..
Response.write WriteResponse(0)
End Function