자식 노드 (HolderAccount)의 이름을 HolderAccount1 및 HolderAccount2로 바꿉니다. 일부 HolderAccounts에는 하나 또는 두 개의 HolderAccount 자식 노드가있을 수 있습니다. HolderAccount에 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 - 그럼 당신의 접근 방법은 무엇입니까? 그리고 이것이 왜 결함이있는 접근법일까요? 호기심 ... 응답 주셔서 감사합니다! –