gpt4 book ai didi

java - 如何在 XPath 中处理方括号

转载 作者:行者123 更新时间:2023-12-02 11:28:49 24 4
gpt4 key购买 nike

我的应用程序必须计算用户单击的 HTML 元素的 XPath。在本例中,我尝试单击 Stackoverflow.com 上的“注册”按钮

这是单击的 HTML 元素的 DOM:

<html itemscope="" itemtype="http://schema.org/QAPage">
<body class="question-page new-topbar no-grid-comments no-grid-post-layout">
<header class="top-bar js-top-bar _fixed">
<div class="-container">
<div class="-actions">
<div class="-ctas">
<a href="https://stackoverflow.com/users/signup?ssrc=head&amp;returnurl=%2fusers%2fstory%2fcurrent" class="login-link btn-topbar-primary" rel="nofollow" data-ga="["Sign Up","Sign Up Navigation","Header",null,null]">Sign Up</a>

如您所见,该 dom 中的最后一个元素是 <a>标签,包含属性:

data-ga="["Sign Up","Sign Up Navigation","Header",null,null]

我的应用程序计算了 HTML 元素的 XPath:

/HTML/BODY[@class='questions-page new-topbar']/HEADER[@class='top-bar js-top-bar _fixed']/DIV[@class='-container']/DIV[@class='-actions']/DIV[@class='-ctas']/A[@href='https://stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent' and @class='login-link btn-topbar-primary' and @rel='nofollow' and @data-ga='['Sign Up','Sign Up Navigation','Header',null,null]']

当我测试 XPath 时,出现错误,找不到任何元素。我追踪错误并发现,如果我删除 and @data-ga='['Sign Up','Sign Up Navigation','Header',null,null]'从我的 XPath 来看,一切正常,但我不能简单地删除属性,所以我的问题是:如何正确转义 XPath 中的嵌套方括号?

最佳答案

引起麻烦的不是方括号,而是引号。

您已经标记了问题 Java,这意味着您应该能够使用 XPath 2.0(例如通过 Saxon 或 Jaxen),这意味着您可以通过将字符串文字中的引号加倍来转义它们:

@data-ga='[''Sign Up'',''Sign Up Navigation'',''Header'',null,null]'

不幸的是,在一般情况下使用 XPath 1.0 很难实现这一点。

关于java - 如何在 XPath 中处理方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423201/

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