Photo Gallery Member List Search Calendars FAQ Ticket List Log Out


VBScript and the XML DOM

 
Logged in as: Guest
arrSession:exec spGetSession 2,2,64482
 Active Users: There are 0 members and 0 guests.
 Users viewing this topic: none
 

 

 
  
  Printable Version
All Forums >> [Scripting] >> WSH & Client Side VBScript >> VBScript and the XML DOM
  Do you like VisualBasicScript.com? Link to us and help spread the word about our forum. Thanks!
Page: [1]
Login
Message << Older Topic   Newer Topic >>
 VBScript and the XML DOM - 9/22/2008 11:00:45 PM   
  Imaginativeone

 

Posts: 7
Score: 0
Joined: 9/22/2008
Status: offline
I have XML that looks like this:

<BANKRECORD>
<tyHeader>+++BIC-A TY-05+++</tyHeader>
<EVNT-014>EVNT-014 RECUR PMT AMT-dollarSign 687.00 ETD-05/04 THRU 12/04 (08)</EVNT-014>
</BANKRECORD>

That I would like to transform into this:
<BANKRECORD>
  <tyHeader="+++BIC-A TY-05+++">
      <TRANS>TRANS RPD-01/26/05 COM-02/05 SSC-B MADCAP</TRANS>
      <EVNT-014>EVNT-014 RECUR PMT AMT-dollarSign 687.00 ETD-05/04 THRU 12/04 (08)</EVNT-014>
  </tyHeader>
</BANKRECORD>

In short, is there a way that I can take an element and "demote" it within an already existing XML tree?  Converting the text to an attribute is a piece of cake, but I'm having a difficult time figuring out the demotions.

So far, I've conceived this:

Function updateXML(updatedXMLArray)

  Dim joinedArray
  joinedArray = Join(updatedXMLArray)

  Dim xmlDocument
  Set xmlDocument = CreateObject("Microsoft.XMLDOM")
      xmlDocument.loadXML("<BANKRECORD>" & joinedArray &"</BANKRECORD>")

  Dim rootDocument
  Set rootDocument = xmlDocument.documentElement

  Dim docChild
  For Each docChild in rootDocument.childNodes

     if docChild.nodeName = tyHeader then

        if(InStr(docChild.nodeName, "EVNT") <> 0 then

           DemoteElement(docChild.parentNode.nodeName, docChild.nodeName, docChild.text)

        end if

     end if

  Next

Function DemoteElement(parent, node, text)

???

End Function

Function PromoteElement(tempRoot, xml)

 Dim elementArray
 Set elementArray = New DynamicArray

 Dim xmlDocument
 Set xmlDocument = CreateObject("Microsoft.XMLDOM")
     xmlDocument.loadXML("<tempRoot>" & xml & "</tempRoot>")

 Dim nodeNameDocument
 Set nodeNameDocument = xmlDocument.documentElement

 Dim item
 item = 0
 elementArray.Data(item) = "<" & tempRoot & ">"
 item = item + 1

 Dim nodeNameChild
 For Each nodeNameChild In nodeNameDocument.childNodes

     MsgBox(nodeNameChild.nodeName & "-" & nodeNameChild.text)

     elementArray.Data(item) = nodeNameChild.text
     item = item + 1

 Next

 elementArray.Data(item) = "</" & tempRoot & ">"

 PromoteElement = elementArray.DataArray

End Function

Function RemoveElement(nodeName, element)

 Dim elementArray
 Set elementArray = New DynamicArray

 Dim xmlDocument
 Set xmlDocument = CreateObject("Microsoft.XMLDOM")
     xmlDocument.loadXML("<nodeName>" & element & "</nodeName>")

 Dim nodeNameDocument
 Set nodeNameDocument = xmlDocument.documentElement

 Dim item
 item = 0
 elementArray.Data(item) = "<" & nodeName & ">"
 item = item + 1

 Dim nodeNameChild
 For Each nodeNameChild In nodeNameDocument.childNodes

     elementArray.Data(item) = nodeNameChild.text
     item = item + 1

 Next

 elementArray.Data(item) = "</" & nodeName & ">"

 RemoveElement = elementArray.DataArray

End Function

Function CreateNewElement(nodeName, element)

 Dim elementArray
 Set elementArray = New DynamicArray

 Dim xmlDocument
 Set xmlDocument = CreateObject("Microsoft.XMLDOM")
     xmlDocument.loadXML("<nodeName>" & element & "</nodeName>")

 Dim nodeNameDocument
 Set nodeNameDocument = xmlDocument.documentElement

 Dim item
 item = 0
 elementArray.Data(item) = "<" & nodeName & ">"
 item = item + 1

 Dim nodeNameChild
 For Each nodeNameChild In nodeNameDocument.childNodes

     elementArray.Data(item) = nodeNameChild.text
     item = item + 1

 Next

 elementArray.Data(item) = "</" & nodeName & ">"

 CreateNewElement = elementArray.DataArray

End Function

Function createElementVB(strElementName, strElementContents, strElementParent)
 Dim beginTag, endngTag
 beginTag = "<"  & strElementName & ">"
 endngTag = "</" & strElementName & ">"
 createElementVB = beginTag & strElementContents & strElementParent & endngTag
End Function

Class DynamicArray
'************** Properties **************
Private aData
'****************************************

'*********** Event Handlers *************
Private Sub Class_Initialize()
  Redim aData(0)
End Sub
'****************************************

'************ Property Get **************
Public Property Get Data(iPos)
  'Make sure the end developer is not requesting an
  '"out of bounds" array element
  If iPos < LBound(aData) or iPos > UBound(aData) then
    Exit Property    'Invalid range
  End If
  Data = aData(iPos)
End Property

Public Property Get DataArray()
  DataArray = aData
End Property
'****************************************

'************ Property Let **************
Public Property Let Data(iPos, varValue)
  'Make sure iPos >= LBound(aData)
  If iPos < LBound(aData) Then Exit Property

  If iPos > UBound(aData) then
    'We need to resize the array
    Redim Preserve aData(iPos)
    aData(iPos) = varValue
  Else
    'We don't need to resize the array
    aData(iPos) = varValue
  End If
End Property
'****************************************

'************** Methods *****************
Public Function StartIndex()
   StartIndex = LBound(aData)
End Function

Public Function StopIndex()
   StopIndex = UBound(aData)
End Function

Public Sub Delete(iPos)
   'Make sure iPos is within acceptable ranges
   If iPos < LBound(aData) or iPos > UBound(aData) then
     Exit Sub    'Invalid range
   End If

   Dim iLoop
   For iLoop = iPos to UBound(aData) - 1
     aData(iLoop) = aData(iLoop + 1)
   Next

   Redim Preserve aData(UBound(aData) - 1)
End Sub
'****************************************
End Class

< Message edited by Imaginativeone -- 9/22/2008 11:02:36 PM >


_____________________________

I was walking in a forest, and tree fell right in front of me! (And I didn't hear it.)
 
 
Post #: 1
 
 
 
  

If you found our site useful please link to us <a href="http://www.visualbasicscript.com">VisualBasicScript.com</a>.
All Forums >> [Scripting] >> WSH & Client Side VBScript >> VBScript and the XML DOM Page: [1]
Jump to:





New Messages No New Messages
Hot Topic w/ New Messages Hot Topic w/o New Messages
Locked w/ New Messages Locked w/o New Messages
 Post New Thread
 Reply to Message
 Post New Poll
 Submit Vote
 Delete My Own Post
 Delete My Own Thread
 Rate Posts