Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - MSXML replaceChild syntax for replacing nodes? >Thread Next - Re: MSXML replaceChild syntax for replacing nodes? Re: MSXML replaceChild syntax for replacing nodes?To: NULL Date: 7/11/2008 6:55:00 PM <olaf.boldt@g...> 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 the old node, not a higher level ancestor. You should also use importNode (or cloneNode if using MSXML before version 5.0) as you shouldn't mix nodes from different documents. importNode basically copies a node and re-assigns the owner Document to the new document. Set clone = xmlDoc2.importNode(xmlDoc.ChildNodes(1).ChildNodes(1).ChildNodes(1), True) Set newNodeReference = xmlDoc2.ChildNodes(1).ChildNodes(1).ReplaceChild(clone, xmlDoc2.ChildNodes(1).ChildNodes(1).ChildNodes(1)) -- Joe Fawcett (MVP - XML) http://joe.fawcett.name | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
