【问题标题】:XPath expression for a phpBB forumphpBB 论坛的 XPath 表达式
【发布时间】:2010-05-27 04:04:41
【问题描述】:

我正在编写一个 Greasemonkey 脚本,我想通过使用 XPath 选择出现在某个用户名之后的帖子正文来更改 phpBB2 论坛上的论坛帖子的文本,但整个事情是一个巨大的乱七八糟的桌子。

<tr>
  <td>
    <span class="name">
      <a>
      <b>username</b>
    </span>
    <span></span>
  </td>
  <td>
    <table>
      <tbody>
        <tr></tr>
        <tr></tr>
        <tr>
          <td>
            <span class="postbody">text of post</span>
            <span></span>
          </td>
        </tr>
      </tbody>
    </table>
  </td>
</tr>

我需要获取在 b 标记中的用户名等于某个名称之后发生的 postbody 跨度,然后将文本弄乱。以下是我的尝试:

var postguy = document.evaluate('fffffff', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < postguy.snapshotLength; i++) {
    thisLink = postguy.snapshotItem(i);
    //then do something with the post
}

【问题讨论】:

    标签: xpath greasemonkey phpbb


    【解决方案1】:

    我会这样做:

    //tr[.//b/text()='username']//span[@class='postbody']
    

    为了与 cmets 保持一致,您可以通过限制 b 标记的位置来缩小范围:

    //tr[.//span[@class='name']//b/text()='username']//span[@class='postbody']
    

    该死的!我对那些@s 太着急了。有时必须放慢脚步,闻一闻@s。

    【讨论】:

    • 如果有人将神奇的用户名加粗在他们的帖子文本中会给出误报,我想 - 我认为我们需要将用户名的搜索限制在 name 类范围内。跨度>
    • @AakashM:一个公平的建议。我将添加限制。
    • 你需要在类前面加一个@。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2012-02-03
    • 1970-01-01
    • 2011-12-26
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多