我需要将相同的属性添加到不同的节点。有没有办法定义属性一次并使用多次次?
这是我尝试做的事情:
Set myAttribute = xmlDoc.createAttribute("operation")
attribute.value = "delete"
现在我可以执行以下操作:
node.attributes.setNamedItem(myAttribute)
但是如果想要将相同的属性添加到另一个节点,我会收到错误。像:
node2.attributes.setNamedItem(myAttribute)
那么,有没有办法重复使用属性而不重复 前两行代码?
答案 0 :(得分:1)
在您的代码中,myAttribute
变量是一个对象引用,因此它始终指向相同的对象。您需要克隆节点。看看cloneNode Method。
Set xmldoc = CreateObject("msxml2.domdocument")
xmldoc.loadXML "<root/>"
Set theElement = xmldoc.createElement("element")
Set theAttribute = xmldoc.createAttribute("attribute")
theAttribute.value = "delete"
For i = 1 To 15
With xmlDoc.documentElement.appendChild(theElement.cloneNode(True))
.attributes.setNamedItem(theAttribute.cloneNode(True))
End With
Next
WScript.Echo xmldoc.xml
输出(手动缩进和美化):
<root>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
<element attribute="delete"/>
</root>