XPath-выражение для форума phpBB - PullRequest
1 голос
/ 26 мая 2010

Я пишу сценарий Greasemonkey, и я хотел изменить текст сообщения на форуме phpBB2, используя XPath для выбора тела сообщения, которое появляется после определенного имени пользователя, но все это гигантбеспорядок таблиц.

<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>

Мне нужно получить диапазон postbody, который происходит после того, как имя пользователя в теге b равно определенному имени, а затем связываться с текстом.Вот как я пытаюсь это сделать:

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
}

1 Ответ

3 голосов
/ 26 мая 2010

Я бы сделал это так:

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

Чтобы выровнять комментарии, вы могли бы немного сузить круг, ограничив, где тег b:

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

Черт возьми! Я слишком торопился за этими @ с. Должен замедлиться и иногда чувствовать запах @ s.

...