-1

私は、VBS を使用して XML ノードの 2 つの属性を変更するためのクリーンな方法を Web のいたるところで探していました (残念ながら、このクライアントでこれを行う唯一の選択肢です)。XML には、次のようなノードがあります。

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

これを次のように変更する必要があります (残りの XML ドキュメントは保持します)。

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

私は 1 日中 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 チョップは、この時点ではほとんど存在しません。長い間行っていません。上記のコードは、属性を読み取ろうとするためだけに設計されています。値を置き換えることはそれほど難しくないと思いました。

これらの値を置き換える方法を実際に理解するのを手伝ってくれる人はいますか? そうすることで、このスクリプトで私がどれだけ離れているかを教えてください。前もって感謝します!

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

編集#2:属性値を取得でき、上記のコードを編集すると、すぐに解決できました。

4

1 に答える 1

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
于 2012-04-27T21:14:46.897 に答える