在XML中,创建一次属性并使用VBScript多次使用它

时间:2015-09-30 16:11:33

标签: xml vbscript xml-parsing

我需要将相同的属性添加到不同的节点。有没有办法定义属性一次并使用多次次?

这是我尝试做的事情:

Set myAttribute = xmlDoc.createAttribute("operation")
attribute.value = "delete"

现在我可以执行以下操作:

node.attributes.setNamedItem(myAttribute)

但是如果想要将相同的属性添加到另一个节点,我会收到错误。像:

node2.attributes.setNamedItem(myAttribute)

那么,有没有办法重复使用属性而不重复 前两行代码

1 个答案:

答案 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>