是的,你可以用一个循环来操作。每个子节点不是有父节点吗。具体到哪个父节点下的某个。 For Each vNode In xmlRootElement.childNodes.Item(0).childNodes 或For i=0 to xmlRootElement.childNodes.Item(0).childNodes.length-1 具体的可以参考http://www.w3school.com.cn/xmldom/index.asp
问题是selectNodes()也可以返回子节点的子节点吗? 如果名字相同。盼复另外,当我创建子节点的时候总是用动态数组先保存好父节点,然后再append,感觉很麻烦,请教您是怎么处理的? Private oXMLDom As MSXML2.DOMDocument Private oXMLElement As MSXML2.IXMLDOMElement Private oTemElement() As MSXML2.IXMLDOMElement Private oNodeAttr As MSXML2.IXMLDOMAttributePrivate Sub Generate_Click() Dim oThisNode As MSXML2.IXMLDOMNode '<--Create a new DOMDoc and then set the root element Set oXMLDom = CreateObject("MSXML2.DOMDocument") oXMLDom.async = False oXMLDom.validateOnParse = False Set oXMLElement = oXMLDom.createElement("Root") Set oXMLDom.documentElement = oXMLElement
'<--Create the child nodes and set the attributes(or values) if needed ReDim oTemElement(0) Set oTemElement(0) = oXMLDom.createElement("Node") oXMLElement.appendChild oTemElement(0) oTemElement(0).setAttribute "NodeAttr", "AttributeOfThisNode"
e.g.
Dim value_node As IXMLDOMNode
Set value_node = xmlRootElement.selectSingleNode("portType")
For Each vNode In xmlRootElement.childNodes.Item(0).childNodes
或For i=0 to xmlRootElement.childNodes.Item(0).childNodes.length-1
具体的可以参考http://www.w3school.com.cn/xmldom/index.asp
Private oXMLDom As MSXML2.DOMDocument
Private oXMLElement As MSXML2.IXMLDOMElement
Private oTemElement() As MSXML2.IXMLDOMElement
Private oNodeAttr As MSXML2.IXMLDOMAttributePrivate Sub Generate_Click() Dim oThisNode As MSXML2.IXMLDOMNode
'<--Create a new DOMDoc and then set the root element
Set oXMLDom = CreateObject("MSXML2.DOMDocument")
oXMLDom.async = False
oXMLDom.validateOnParse = False
Set oXMLElement = oXMLDom.createElement("Root")
Set oXMLDom.documentElement = oXMLElement
'<--Create the child nodes and set the attributes(or values) if needed
ReDim oTemElement(0)
Set oTemElement(0) = oXMLDom.createElement("Node")
oXMLElement.appendChild oTemElement(0)
oTemElement(0).setAttribute "NodeAttr", "AttributeOfThisNode"
'<--Using dynamic object array to create nodes(attribute node)
ReDim Preserve oTemElement(UBound(oTemElement) + 1)
Set oTemElement(UBound(oTemElement)) = oXMLDom.createElement("ChildNode")
oTemElement(UBound(oTemElement) - 1).appendChild oTemElement(UBound(oTemElement))
Set oNodeAttr = oXMLDom.createAttribute("ChildNodeAttri")
oTemElement(UBound(oTemElement)).setAttributeNode oNodeAttr
oNodeAttr.Value = "ValueOfThisNodeAttr"
oTemElement(UBound(oTemElement)).Text = "Value Of this Element Node"
Save.Enabled = True
End Sub
两个函数的参数都是用 XPath 进行查找的,具体看一下 MSDN 中的 XPath 说明。