【问题标题】:Changing node values in XML using VBS with similar names使用具有相似名称的 VBS 更改 XML 中的节点值
【发布时间】:2016-11-02 10:25:58
【问题描述】:

我正面临这个挑战,即使用 VBScript 更改具有相同名称的 xml 文件中的节点值。以下是示例 XML:

- <MappingData>
  	<Name>Name 1</Name> 
	- <ValueField FieldName="Name 2">
		<CharValue>Value 1</CharValue> 
		</ValueField>
	- <ValueField FieldName="Name 3">
		<CharValue>Value 1</CharValue> 
		</ValueField>

我的要求是改变两个标签出现的值

&lt;CharValue&gt;

。 如果这些标签中有任何属性,我可以这样做,但在这种情况下,我被卡住了。

我尝试了以下代码,但无法得到我需要的。

Set NodeList = objXMLDoc.documentElement.selectNodes("//MappingData/ValueField/CharValue") 
For i = 0 To NodeList.length - 1
    node.Text = "Value 1"
Next

感谢任何帮助。谢谢。

【问题讨论】:

  • 更改xml对象或xml文件中的值?
  • 您好 Pankaj,我想更改 XML 文件中这些标签的值。我可以对其他标签的文件进行更改,但在这种情况下,我无法使用我提供的代码进行更改。
  • node.Text = "Value 1" 不正确,因为您的代码中没有任何名为 node 的内容。应该是NodeList,可能是节点对象数组。
  • 完全正确。

标签: vbscript


【解决方案1】:

试试下面的代码

Set xDoc = CreateObject( "Msxml2.DOMDocument.6.0" )
xDoc.setProperty "SelectionLanguage", "XPath"
xDoc.async = False
xDoc.load "test.xml"

Set nNodes = xDoc.selectNodes("//MappingData/ValueField/CharValue")
For i = 0 To nNodes.Length - 1
  nNodes(i).text = "Changed value " & i
Next

xDoc.Save "test.xml"

【讨论】:

  • 非常感谢 Pankaj,它起作用了 :) 在我的代码的 Set Node 中不需要 documentElement。再次感谢您的快速解决。
  • @J.A. - 乐意效劳。如果这对您有用,请不要忘记将其标记为 Accepted
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
相关资源
最近更新 更多