gpt4 book ai didi

xml - 使用命名空间不可知查询时,VB Script XML selectNodes 会丢失上下文

转载 作者:行者123 更新时间:2023-12-04 17:02:52 24 4
gpt4 key购买 nike

在 VB 脚本中使用 xpath 查询 XML 文件时,使用命名空间不可知查询时所选节点集的“上下文”丢失: (查看下面的“For...Next”以获得特定示例)

 Dim Results :Set Results = CreateObject("Microsoft.XMLDOM")
Results.setProperty "SelectionLanguage", "XPath"
Results.setProperty "SelectionNamespaces", "xmlns:results='http://example.domain.org/XMLSchema/results-example-3'
dim defEXdef
set defEXdef = Results.selectNodes("//*[local-name()='definition']")
dim def

'PROBLEM OCCURS IN THIS FOR...NEXT loop
For Each def in defEXdef
'HERE: The commented line below works successfully to load the "extended_definitions" elements out from the current "def"
'dim extended_definitions : set extend_definitions = def.getElementsByTagName("results:extended_definitions")

'HERE: The line below returns all extended_definitions nodes and ignores the parent's context - as though "def" is now the whole document
dim extended_definitions : set extended_definitions = def.selectNodes("//*[local-name()='extended_definitions']")
dim edef
For Each edef in extended_definitions
ExDefDict.add edef.text
Next
Next

似乎可以通过从 selectNodes 中删除“//”来解决该问题。声明,但这是为什么呢?代码中的“def”项如何包含比其原始查询选择更多的信息?

我没有示例 XML,因为这是一个相当人为的示例(原始文档太敏感,无法发布)。如果需要,我可以尝试生成示例 XML。

最佳答案

如果您从 // 开始您的路径然后从文档节点向下搜索,使用 def.selectNodes(".//*[local-name()='extended_definitions']")搜索 def 的后代节点而不是文档节点。

关于xml - 使用命名空间不可知查询时,VB Script XML selectNodes 会丢失上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com