子ノード(HolderAccount)の名前をHolderAccount1とHolderAccount2に変更するコードがあります。一部のHolderAccountには、1つまたは2つのHolderAccount子ノードが含まれている場合があります。私はHolderAccountに1つのHolderAccountしかない新しいHolderAccountを作成したいと思います。VBScriptにノードを追加しようとしています
親ノード= HolderAccounts
子ノード= HolderAccount
入力サンプル:
<HolderAccounts>
<HolderAccount>test</HolderAccount>
</HolderAccounts>
<HolderAccounts>
<HolderAccount>test</HolderAccount>
<HolderAccount>test</HolderAccount>
</HolderAccounts>
マイ出力:
<HolderAccounts>
<HolderAccount1>test</HolderAccount1>
<HolderAccount2></HolderAccount2>
</HolderAccounts>
<HolderAccounts>
<HolderAccount1>test</HolderAccount1>
<HolderAccount2>test</HolderAccount2>
</HolderAccounts>
:私が達成しようとしています何
<HolderAccounts>
<HolderAccount1>test</HolderAccount1>
<HolderAccount2/>
</HolderAccounts>
<HolderAccounts>
<HolderAccount1>test</HolderAccount1>
<HolderAccount2>test</HolderAccount2>
<HolderAccount2/>
</HolderAccounts>
Set xml = CreateObject("Microsoft.XMLDOM")
xml.async = False
count_var = 1
total_accounts = 0
total_modified_accounts = 0
'Get data from directory
If xml.Load("c:\XML_DATA2.xml") Then
'Find and give me a list of all HolderAccounts
For Each HolderAccounts In xml.SelectNodes("//HolderAccounts")
'Find and give me a list of all HolderAccount
For Each HolderAccount In HolderAccounts.SelectNodes("./HolderAccount")
'Check to see if you are pointing to 2nd HolderAccount in the HolderAccounts
If count_var > 1 Then
'Rename the 2nd HolderAccount in HolderAccounts
Set accountEnum = xml.createNode(1, "HolderAccount" & count_var, "")
'Give me the current nodes child nodes
For Each child In HolderAccount.childNodes
'Attach the child nodes to the 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 the 1st account
Set accountEnum = xml.createNode(1, "HolderAccount" & count_var, "")
For Each child In HolderAccount.childNodes
accountEnum.appendChild(child.cloneNode(TRUE))
Next
HolderAccounts.replaceChild accountEnum, HolderAccount
'This is returning <HolderAccount2/> for nodes within <HolderAccounts>,
'I only want to create a new node where exist one 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
番号付きノード名「どんな問題あなたに欠陥のあるアプローチですここではIMOを解決しようとしています。あいまいな理由のために、ノードにインデックスを絶対に付けなければならない場合は、それらにインデックス属性を追加するだけです。 –
新しい要素ノードを作成し、新しい空のテキストノードを接続します。 – omegastripes
@Ansgar - あなたのアプローチは何ですか?なぜこれは欠陥のあるアプローチですか?興味深い...応答してくれてありがとう! –