I am trying to Edit a XML DOM file using Excel VBA, but facing issues reaching beyond level 1 nodes. My requirement is to Modify all (and only) Text nodes but the script I wrote modifies all level 1 nodes.
Please suggest Code Modifications.
Input XML:
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <Request> <individual> <hasName> <firstName>ABC</firstName> <lastName>DEF</lastName> </hasName> <birthDate>2015-01-10</birthDate> <hasContact> <type>Mobile</type> <phoneAddress> <countryCode>02</countryCode> <localNumber>12345678</localNumber> </phoneAddress> </hasContact> </individual> </Request> </Body> </Envelope>
Excel VB Script:
Option Explicit Sub Test() Dim xmlDoc Dim colNodes Dim objNode Dim objNodesParam Set xmlDoc = CreateObject ("Microsoft.XMLDOM") xmlDoc.Async = "False" xmlDoc.Load("H:\Desktop\Request.xml") Set colNodes = xmlDoc.SelectNodes ("/Envelope/Body/Request/individual/*") For Each objNode In colNodes objNodeParam = "{{" & objNode.nodeName & "}}" objNode.Text = objNodeParam Next xmlDoc.Save "H:\Desktop\Request.xml" End Sub
Actual Output of Above Script:
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <Request> <individual> <hasName>{{hasName}}</hasName> <birthDate>{{birthDate}}</birthDate> <hasContact>{{hasContact}}</hasContact> </individual> </Request> </Body> </Envelope>
Expected Output:
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <Request> <individual> <hasName> <firstName>{{firstName}}</firstName> <lastName>{{lastName}}</lastName> </hasName> <birthDate>{{birthDate}}</birthDate> <hasContact> <type>{{type}}</type> <phoneAddress> <countryCode>{{countryCode}}</countryCode> <localNumber>{{localNumber}}</localNumber> </phoneAddress> </hasContact> </individual> </Request> </Body> </Envelope>
No comments:
Post a Comment