我有一个包含以下标记的xml文件:
<gmd:title>
<gco:CharacterString>READER FOREVER LEADER</gco:CharacterString>
</gmd:title>
我试图替换标题:
<gmd:title>
<gco:CharacterString>CHANGE TITLE</gco:CharacterString>
</gmd:title>
但我只有这段代码:
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("albums.xml")
Set Elem = objXMLDoc.documentElement.selectSingleNode("gco:CharacterString")
MsgBox(Elem.text)
如何使用vbScript执行此操作?
答案 0 :(得分:2)
在the first hit for the obvious google search的帮助下,我将here的答案修改为:
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim sFSpec : sFSpec = goFS.GetAbsolutePathName("..\testdata\xml\so15393560.xml")
Dim sNS : sNS = "xmlns:gmd='urn:x:y:z:1' xmlns:gco='urn:x:y:z:1'"
Dim oXML : Set oXML = CreateObject("Msxml2.DOMDocument")
oXML.setProperty "SelectionLanguage", "XPath"
oXML.setProperty "SelectionNamespaces", sNS
oXML.async = False
oXML.load sFSpec
If 0 = oXML.parseError Then
WScript.Echo oXML.xml
WScript.Echo "-----------------"
Dim sXPath : sXPath = "/gmd:title/gco:CharacterString"
Dim ndFnd : Set ndFnd = oXML.selectSingleNode(sXPath)
If ndFnd Is Nothing Then
WScript.Echo sXPath, "not found"
Else
WScript.Echo ndFnd.text
WScript.Echo "-----------------"
ndFnd.text = "Abracadabra"
WScript.Echo oXML.xml
End If
Else
WScript.Echo oXML.parseError.reason
End If
输出:
<gmd:title xmlns:gmd="urn:x:y:z:1" xmlns:gco="urn:x:y:z:1">
<gco:CharacterString>READER FOREVER LEADER</gco:CharacterString>
</gmd:title>
-----------------
READER FOREVER LEADER
-----------------
<gmd:title xmlns:gmd="urn:x:y:z:1" xmlns:gco="urn:x:y:z:1">
<gco:CharacterString>Abracadabra</gco:CharacterString>
</gmd:title>