首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBScript中的SingleSelectNode

VBScript中的SingleSelectNode
EN

Stack Overflow用户
提问于 2017-06-23 15:37:18
回答 2查看 273关注 0票数 1

我有节点<EnginesTimesQueues><NumberOfEngines>。我需要将两个节点的值分别更新为36和ABC。

代码语言:javascript
复制
<job>
  <Step number="3340">
    <Category name="Parameters">
      <Item name="EnginesTimesQueues" commarea="Y">6</Item>
    </Category>
  </Step>

  <Step number="3360">
    <Category name="Parameters">
      <Item name="NumberOfEngines" commarea="Y">2</Item>
    </Category>
  </Step>
</job>

我尝试使用SingleSelectNode()遍历节点,节点如下:

代码语言:javascript
复制
/Job/Step/Category/Item[@name='EnginesTimesQueues']|/Job/Step/Category/Ite[@commarea='Y']
/Job/Step/Category/Item[@name='NumberOfEngines']|/Job/Step/Category/Item[@commarea='Y']

最初在循环中将EnginesTimesQueues值更新为36,第二次不是将NumberOfEngines更新为'ABC',而是再次将EnginesTimesQueues更新为'ABC‘。

EN

回答 2

Stack Overflow用户

发布于 2017-06-23 16:31:56

试试这样的东西。

代码语言:javascript
复制
Select objNodeList = objDoc.DocumentElement.Selectnodes("/Job/Step/")
objNodeList.Item(0).SelectSingleNode("/Category/Item[@name='EnginesTimesQueues']|/Category/Item[@commarea='Y']").Text = "36" 
objNodeList.Item(1).SelectSingleNode("/Category/Item[@name='NumberOfEngines']|/Category/Item[@commarea='Y']").Text = "ABC"

用另一个解决方案更新答案。这个Xpath也应该可以工作。试试看。/Job/Step1/Category/Item@name='NumberOfEngines'|/Job/Step1/Category/Item@commarea='Y‘

默认情况下,vbscript会将“Step”的第一个匹配项视为要遍历的轨迹。我们需要显式地指定节点索引来访问特定的节点索引。

注意:我还没有在我这端运行过这段代码。您可能需要进行一些调试。

票数 0
EN

Stack Overflow用户

发布于 2017-06-23 21:10:03

除了方法名是SelectSingleNode(),而不是SingleSelectNode(),以及XPath表达式是区分大小写的(因此/Job与节点<job>不匹配)之外:您使用的是表达式,这意味着

代码语言:javascript
复制
/Job/Step/Category/Item[@name='NumberOfEngines']|/Job/Step/Category/Item[@commarea='Y']

将匹配其name属性值为"NumberOfEngines“<Item>节点以及其<Item>属性值为"Y”的<Item>节点。由于后一个(子)表达式匹配两个<Item>节点,而SelectSingleNode()将结果限制为单个项,因此您将再次获得第一个节点。

如果希望同时匹配节点的两个属性,请使用and运算符:

代码语言:javascript
复制
/Job/Step/Category/Item[@name='NumberOfEngines' and @commarea='Y']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44715698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档