XML : Editing All Text Nodes of XML DOM using Excel VBA

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