xml - Trying to add a node in VBScript -
i have code renames child nodes (holderaccount) holderaccount1 , holderaccount2. holderaccounts may have 1 or 2 holderaccount child nodes. want create new holderaccount, there 1 holderaccount in holderaccounts.
parent node = holderaccounts
child node = holderaccount
input sample:
<holderaccounts> <holderaccount>test</holderaccount> </holderaccounts> <holderaccounts> <holderaccount>test</holderaccount> <holderaccount>test</holderaccount> </holderaccounts> my output:
<holderaccounts> <holderaccount1>test</holderaccount1> <holderaccount2/> </holderaccounts> <holderaccounts> <holderaccount1>test</holderaccount1> <holderaccount2>test</holderaccount2> <holderaccount2/> </holderaccounts> what trying accomplish:
<holderaccounts> <holderaccount1>test</holderaccount1> <holderaccount2></holderaccount2> </holderaccounts> <holderaccounts> <holderaccount1>test</holderaccount1> <holderaccount2>test</holderaccount2> </holderaccounts> set xml = createobject("microsoft.xmldom") xml.async = false count_var = 1 total_accounts = 0 total_modified_accounts = 0 'get data directory if xml.load("c:\xml_data2.xml") 'find , give me list of holderaccounts each holderaccounts in xml.selectnodes("//holderaccounts") 'find , give me list of holderaccount each holderaccount in holderaccounts.selectnodes("./holderaccount") 'check see if pointing 2nd holderaccount in holderaccounts if count_var > 1 'rename 2nd holderaccount in holderaccounts set accountenum = xml.createnode(1, "holderaccount" & count_var, "") 'give me current nodes child nodes each child in holderaccount.childnodes 'attach child nodes account accountenum.appendchild(child.clonenode(true)) next holderaccounts.replacechild accountenum, holderaccount total_modified_accounts = total_modified_accounts + 1 xml.save("c:\xml_data2.xml") else '1st holderaccount 'rename 1st account set accountenum = xml.createnode(1, "holderaccount" & count_var, "") each child in holderaccount.childnodes accountenum.appendchild(child.clonenode(true)) next holderaccounts.replacechild accountenum, holderaccount 'this returning <holderaccount2/> nodes within <holderaccounts>, 'i want create new node exist 1 node within <holderaccounts> set accountenum2 = xml.createelement("holderaccount2") holderaccounts.appendchild(accountenum2) xml.save("c:\xml_data2.xml") end if count_var = count_var + 1 next count_var = 1 total_accounts = 0 next end if set node = nothing set xml = nothing
i've simplified code bit better suit logic. looks you've changed specifications enumerate first node well, can rid of if statement altogether. else block being called since count_var started @ 1 each holderaccounts container.
instead, want handle case there 1 account under node. inner loop copy it, need add new, empty holderaccount node well.
input
<fabedole> <holderaccounts> <holderaccount>test</holderaccount> </holderaccounts> <holderaccounts> <holderaccount>test</holderaccount> <holderaccount>test</holderaccount> </holderaccounts> </fabedole> output
<fabedole> <holderaccounts> <holderaccount1>test</holderaccount1> <holderaccount2/> </holderaccounts> <holderaccounts> <holderaccount1>test</holderaccount1> <holderaccount2>test</holderaccount2> </holderaccounts> </fabedole> code
set xml = createobject("microsoft.xmldom") xml.async = false count_var = 1 if xml.load("c:\xml_data2.xml") each holderaccounts in xml.selectnodes("//holderaccounts") set holderaccountcollection = holderaccounts.selectnodes("./holderaccount") each holderaccount in holderaccountcollection set accountenum = xml.createnode(1, "holderaccount" & count_var, "") each child in holderaccount.childnodes accountenum.appendchild(child.clonenode(true)) next holderaccounts.replacechild accountenum, holderaccount count_var = count_var + 1 next if holderaccountcollection.length = 1 holderaccounts.appendchild(xml.createnode(1,"holderaccount" & count_var,"")) count_var = 1 next xml.save("c:\xml_data2.xml") end if
Comments
Post a Comment