【问题标题】:VBScript modify a value in a XML fileVBScript 修改 XML 文件中的值
【发布时间】:2021-04-30 18:14:38
【问题描述】:

我正在学习 VBScript,我正在尝试使用 vbscript 修改 xml 文件上的值,但变量“colNode”总是出错:

Microsoft VBScript 运行时错误:此对象不支持此 属性或方法:'colNode.Text

这是我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
    <Text Name="Text1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text>
    <Text Name="Text2">Aliquam mattis quam lorem, ut sollicitudin dolor dignissim sed. </Text>
    <Text Name="Text3">Fusce cursus tellus eu consectetur rutrum.</Text>
</Configuration>

这是我的 VBScript 代码:

    Set xmlDoc = _
    CreateObject("Microsoft.XMLDOM")

    xmlDoc.Async = "False"
    xmlDoc.Load(".\message.xml")

    
    Set colNode=xmlDoc.selectNodes _
  ("//Configuration/Text[@Name='Text2']")

    
    colNode.Text = "It's a test!"  
    xmlDoc.Save "C:\Scripts\Audits.xml"

【问题讨论】:

  • 试试Set colNode=xmlDoc.SelectSingleNode("//Configuration/Text[@Name='Text2']")
  • 试一试,得到以下错误信息:Required object: 'colNode
  • 同样的错误信息Required object: 'colNode(...)'

标签: xml vbscript


【解决方案1】:

SelectNodes 方法返回一个节点集合(在本例中是一个只有一个的集合),如果您想使用它,您需要遍历该集合以更改集合中每个节点中的文本:

Set colNode=xmlDoc.SelectNodes("//Configuration/Text[@Name='Text2']")
For Each node In colNode
    node.Text = "It's a test!"
Next

然而,在您的示例中,您试图仅更改一个特定节点中的文本,因此您可以使用 SelectSingleNode 方法:

Set colNode=xmlDoc.SelectSingleNode("//Configuration/Text[@Name='Text2']")
colNode.Text = "It's a test!"

【讨论】:

  • 我收到以下错误消息:Required object: 'colNode'
  • @Noemie 那是因为您的 XPath 查询没有选择任何内容,所以 colNode 将无法正确设置。 (换句话说,您问题中的示例 XML 与您的真实 XML 不同。)
  • 我尝试使用“SelectSingleNode”(大写 S),它可以工作
  • @Noemie 如果我不得不猜测,您的真实 XML 位于命名空间 (xmlns="...") 中,而您将其编辑掉是因为您认为它不重要。
猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 2018-09-07
相关资源
最近更新 更多