【问题标题】:Xpath Error: Can not convert #STRING to a NodeListXpath 错误:无法将#STRING 转换为 NodeList
【发布时间】:2019-07-17 04:35:52
【问题描述】:

在其中一个 API 解决方案中,传入请求是 XML 格式,我需要获取第一个子节点标记名称来决定运行逻辑。我正在使用 xpath 获取标签名称,在运行 xpath 时出现错误 “无法将 #STRING 转换为 NodeList”

我已尝试使用本地名称和名称,但两者都给出相同的错误。 我的xml如下

<p:Check xmlns:p="http://amarwayx.com.cu/WCSXMLSchema/creptonium">
            <AttributeChnageLocal>
                <TaskID>17723</TaskID>
                <BatchID>12345</BatchID>
                <Expiry>2022-12-06</Expiry> 
                <TimeStamp>2019-07-20T22:45:48</TimeStamp> 
            </AttributeChnageLocal>
        </p:Check>

我使用的Xpath是

    local-name(/p:Check/*)
    name(/p:Check/*)
    local-name(/p:Check/*[1])
    name(/p:Check/*[1])

一些在线 xpath 评估器如何评估正确的名称(AttributeChnageLocal),我没有得到 xpath 语法错误的地方。 下面是我的工具快照。

同样的表达方式也可以

【问题讨论】:

  • 您是否将 xpath 返回值存储到 node?它应该存储在String 中,因为上面的 xpaths' 将返回字符串值。你能请你得到错误的代码行吗?
  • 我将结果存储为字符串,我有一个可以处理所有事情的产品,我们只需要执行正确的 xpath,添加有问题的快照
  • 检查与第一个单选按钮关联的逻辑,如果它试图从节点获取文本。

标签: xpath


【解决方案1】:

您已勾选一个标有“将所选节点的字符串值存储为文本”的框,这表明您使用的 XPath 评估工具希望您的 XPath 表达式选择一个节点;但它没有,它选择了一个字符串。

我不知道您使用的这个工具是什么,但不幸的是,它的所有选项似乎都假定您正在选择节点。

【讨论】:

  • 感谢您的回复,在相同的工具中,相同类型的 xpath 表达式工作正常,我添加了有问题的快照,我不明白为什么相同的表达式会给出两个不同的结果
  • 我不知道有问题的工具,所以我无法提供更多帮助。
猜你喜欢
  • 2016-11-20
  • 2012-05-05
  • 2015-12-09
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
相关资源
最近更新 更多