2013-03-13 57 views
1

我有一個包含以下標記一個XML文件:更換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

看吧http://stackoverflow.com/questions/11726266/searching-xml-using-vbs-and-changing-a-value查看是否使用SelectionNamespaces屬性正確地解決了您的問題。 – 2013-03-13 18:48:16

回答

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

我希望你會成爲一個經典的問題,回答這個,而不是每一個問題是問時間發佈了相同的答案。您可以使Q和A處於MSXML級別,其他答案可以轉換爲不同的語言和/或平臺(例如VBScript)。請參閱「[.NET中的NullReferenceException是什麼?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)」一個流行的規範問答示例 - 贏得了我兩個黃金徽章,順便說一句。 – 2013-03-13 22:02:39

+0

親愛Ekkehard霍納,在運行你寫的代碼,輸出爲「/ GMD:標題/ GCO:CharacterString」找不到。看起來代碼無法找到導致標題文本的正確路徑。你說什麼?感謝您的時間 – HelpOverFlow 2013-03-14 12:39:33

+0

@HelpOverFlow - 我說:您發佈的XML片段不包含根'gmd:title' - 正如我的示例和XPath表達式(標記前導/)所假設的那樣。 – 2013-03-14 17:17:48