【问题标题】:Replacing xml Text替换xml文本
【发布时间】:2013-03-13 18:29:04
【问题描述】:

我有一个包含以下标签的 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 做到这一点?

【问题讨论】:

标签: xml vbscript


【解决方案1】:

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>

【讨论】:

  • 我希望您对此提出规范的问题和答案,而不是每次提出问题时都发布相同的答案。您可以将 Q 和 A 设置为 MSXML 级别,而其他答案可以转换为不同的语言和/或平台(例如 VBScript)。请参阅“What is a NullReferenceException in .NET?”以获取流行的规范问答示例 - 顺便说一句,我为我赢得了两个金徽章。
  • 亲爱的 Ekkehard Horner,在运行您编写的代码时,未找到输出“/gmd:title/gco:CharacterString”。似乎代码找不到通向标题文本的正确路径。你说什么?感谢您的宝贵时间
  • @HelpOverFlow - 我说:您发布的 XML 片段不包含根 gmd:title - 正如我的示例和 XPath 表达式(标记前导 /)所假设的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 2017-02-03
  • 2011-02-19
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多