Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Re: MSXML replaceChild syntax for replacing nodes? [Thread Next] Re: MSXML replaceChild syntax for replacing nodes?To: NULL Date: 7/11/2008 11:18:00 AM On Jul 11, 10:55=A0am, "Joe Fawcett" <joefawc...@newsgroup.nospam> wrote: > <olaf.bo...@gmail.com> wrote in message > > news:463a1ab3-28a0-4f3b-baaf-9bcd8a791287@z...... > > > I have two xml files and I want to use VBA to replace a specific node > > in one of the xml files with a specific node in the other file. Both > > files have exactly the same structure. Only the root is different. > > > The first node is: > > xmlDoc.ChildNodes(1).ChildNodes(1).ChildNodes(1) > > And the second node is: > > xmlDoc2.ChildNodes(1).ChildNodes(1).ChildNodes(1) > > > What I want is to replace the second node in xmlDoc2 with the first > > one in xmlDoc. > > > However, when I use the following code: > > > xmlDoc2.replaceChild xmlDoc.ChildNodes(1).ChildNodes(1).ChildNodes(1), > > xmlDoc2.ChildNodes(1).ChildNodes(1).ChildNodes(1) > > > I get the error message: "Insert position Node must be a Child of the > > Node to insert under." > > > What's the correct syntax? > > It's replace child so node to call the method on must be the parent of th= e > old node, not a higher level ancestor. > You should also use importNode (or cloneNode if using MSXML before versio= n > 5.0) as you shouldn't mix nodes from different documents. > importNode basically copies a node and re-assigns the owner Document to t= he > new document. > Set clone =3D > xmlDoc2.importNode(xmlDoc.ChildNodes(1).ChildNodes(1).ChildNodes(1), True= ) > Set newNodeReference =3D > xmlDoc2.ChildNodes(1).ChildNodes(1).ReplaceChild(clone, > xmlDoc2.ChildNodes(1).ChildNodes(1).ChildNodes(1)) > > -- > > Joe Fawcett (MVP - XML)http://joe.fawcett.name Thanks for the quick answer. I'll give it a try. | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
