2012-04-27 45 views
-1

我一直在遍尋網絡,尋找一種乾淨的方式來使用VBS更改XML節點中的2個屬性(不幸的是,我只能通過此客戶端選擇此屬性)。在XML中有一個節點,看起來像這樣:我需要在VBS中更改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:我能夠很快解決它,一旦我能夠檢索屬性值,我已經編輯了上面的代碼。

+0

所以我很困惑......這個問題是否解決了?如果你已經解決了這個問題,你應該單獨留下問題並添加一個答案來解釋解決方案是什麼,以便未來的訪問者能夠受益。如果問題沒有解決,很難說修改後的實際問題是什麼。拋出的錯誤在哪裏? – 2012-04-28 04:56:19

回答

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 
+0

由於我只專注於屬性更新,因此我已經將保存的內容清除了。 – 2012-04-27 21:22:29