2012-04-27 2 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のチョップはこの時点ではほとんど存在していない、私は非常に長い時間でそれをやっていない。上記のコードは属性の読み込みを試みるように設計されているにすぎません。

誰も私が実際にそれらの値を置き換える方法を理解するのに役立つことができますか?そうすることで、私はこの脚本のどれくらい離れているのかを教えてください。前もって感謝します!

EDIT:これで2つの属性値を取得できます(上記のコード変更を参照)。私が今必要とするのは、新しい属性値をXMLファイルに書き込む方法です。これは完了です。誰でも私に何か指針を与えることができますか?

EDIT#2:属性値を取得することができ、上記のコードを編集した後、私はかなり迅速に解決できました。

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

属性の更新のみに焦点を当てていたので、わかりやすく保存しておきました。 –

関連する問題