【发布时间】:2017-07-27 17:22:33
【问题描述】:
以下 VBA 代码采用 XML 文件并将特定节点附加到文档中的其他节点:
Dim xmlFilePath$, newFilePath$
Dim DOM As MSXML2.DOMDocument
Dim Node As IXMLDOMNode
Dim fso As Scripting.FileSystemObject
Dim itm As IXMLDOMNode
xmlfilepath = "Path"
newfilepath = "Path_2"
Set DOM = CreateObject("MSXML2.DOMDocument.6.0")
DOM.Load xmlFilePath
For Each Node In DOM.DocumentElement.getElementsByTagName("Tag")
For Each itm In Node.ParentNode.NextSibling.ChildNodes
itm.appendChild Node.CloneNode(True)
Next
Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set DOM = Nothing
Set fso = Nothing
Set Node = Nothing
End Sub
此代码在编写时运行良好。但是,如果循环
For Each Node In DOM.DocumentElement.getElementsByTagName("Tag")
For Each itm In Node.ParentNode.NextSibling.ChildNodes
itm.appendChild Node.CloneNode(True)
Next
Next
改为
For Each Node In DOM.DocumentElement.getElementsByTagName("Tag")
For Each itm In Node.ParentNode.ParentNode
itm.appendChild Node.CloneNode(True)
Next
Next
我收到“需要对象”错误。如果我改为使用Node.ParentNode.ParentNode.ChildNodes,则不会出现错误,但我尝试附加的节点会放置在已经存在的子节点内,因此结果类似于<a>Example<b>More_Writing</b></a>。
有没有办法让路径Node.ParentNode.ParentNode 被接受为有效,或者我应该以不同的方式处理这个问题?
【问题讨论】: