我需要使用VBS更改XML文档中的属性

时间:2012-04-27 20:05:53

标签: xml vbscript xml-parsing

我一直在网上寻找一种干净的方法来使用VBS更改XML节点中的2个属性(不幸的是,我唯一的选择是使用此客户端)。 XML中有一个节点,如下所示:

<lot id="ajhgkhga" lot="1" block="1" section="73R">

我需要将其更改为此(并保留XML文档的其余部分):

<lot id="ajhgkhga" lot="1" block="22" section="55">

我一直在大部分时间都在VBS上攻击,现在我就在这里:

    Dim objXMLDoc
Dim objXMLElement
Dim objXMLNodeList
Dim numObjXMLNodeList
Dim i
Dim lot
Dim section
Dim attr


set objXMLDoc = CreateObject("Microsoft.XMLDOM")

objXMLDoc.async = "false"
objXMLDoc.load("section73R.xml")

Set objXMLNodeList = objXMLDoc.getElementsByTagName("lot")

numObjXMLNodeList = objXMLNodeList.length

For i = 0 to numObjXMLNodeList - 1

    ' current value of the block and section attributes of the lot element
    block = objXMLNodeList.item(i).getAttribute("block")
    section = objXMLNodeList.item(i).getAttribute("section")
    'Wscript.Echo block & " " & section

    ' new value of the block and section attributes of the lot element
    objXMLNodeList.item(i).setAttribute "block", "22"
    objXMLNodeList.item(i).setAttribute "section", "55"

Next

如上所示,抛出错误。我的VBS印章在这一点上几乎不存在,我在很长一段时间内都没有这样做。上面的代码只是为了尝试读取属性而设计的,我认为一旦我有了替换值就不会太难了。

任何人都可以帮我真正弄清楚如何更换这些值吗?这样做表明我在这个剧本中有多远?提前谢谢!

编辑:我现在可以获取两个属性值(参见上面的代码更改)。我现在需要的是将新属性值写入XML文件的方法,这将是一个完成的交易。任何人都可以给我任何指示吗?

编辑#2:一旦我能够检索属性值并且我编辑了上面的代码,我就能很快解决它。

1 个答案:

答案 0 :(得分:1)

目前还不清楚文档的结构是什么。我能够使用此代码更改属性。显然,我的文档中没有多个“批量”,因此您可能需要遍历节点以找到要编辑的节点。这应该让你顺利:

Dim oXML
Set oXML = CreateObject("Microsoft.XMLDOM")
oXML.loadXML("<list><lot id=""ajhgkhga"" lot=""1"" block=""1"" section=""73R""></lot></list>")

Dim ixnLot
Set ixnLot = oXML.selectSingleNode("//list/lot")
ixnLot.Attributes.getNamedItem("block").Text = "22"
ixnLot.Attributes.getNamedItem("section").Text = "55"

'oXML.Save 'You'll need to call the same method to actually save the changes to the file