如何在 VB6 中评估连接的字符串作为索引 XPath 表达式

How evaluate concatenated string as indexed XPath expression in VB6

我在 VB6 中通过连接字符串构建了一个 Xpath 表达式:

    strXPath = "xDOC.selectNodes(" & """/GroupType1""" & ").item(" & CStr(i) & ").selectNodes(" & """/OperationStageCollection/OperationStage""" & ").length"

"i" 是一个整数,用于索引

我想计算 strXPath 以获得循环计数器,例如:

    n = CInt(strXPath)

n 声明为 Integer; strXPath 声明为字符串。 VB6 在上述计算表达式上抛出类型不匹配错误。我一定错过了一些明显的东西。我如何评估 strXPath?

我意识到 XPath 表达式本身可能存在错误,但我想让评估正常工作以调试此类可能的错误。

尝试删除一些双引号:

iLength = xDOC.selectNodes("/GroupType1").item(i).selectNodes("/OperationStageCollection/OperationStage").length

这应该 return 您想要的 length 属性,作为整数。

然后您可以在循环中使用 iLength

@BRW:您的两个问题都非常具体,即 如何 使用 XPath 实现某些结果。但我怀疑如果你解释 what (数据)你试图从 XML 检索,评论者可能会告诉你你没有想到的方式,例如假设您想遍历 <OperationEventCollection> 中的所有 <OperationEvent>,可以通过 //GroupType1/OperationStageCollection/OperationStage/OperationEventCollection/OperationEvent[1-based-index] 检索单个 <OperationEvent>,例如//GroupType1/OperationStageCollection/OperationStage/OperationEventCollection/OperationEvent[1],这导致单个 XML 节点:

 <OperationEvent>
      <OperationEventDate1>2018-12-16</OperationEventDate1>
      <OperationEventCode>5</OperationEventCode>
      <OperationEventDate2>2018-05-16</OperationEventDate2>
 </OperationEvent>

因此,使用多个 selectNodes 方法,一个 正确的 XPath 查询可能会立即产生所需的结果。