отфильтровывать узлы с определенным выражением id, используя xpath - PullRequest
2 голосов
/ 21 декабря 2010

В настоящее время у меня есть следующие примеры xpath узлов, которые я хочу:

/html
 /body
  /div[@id='wp']
   /div[@id='ct']
    /div
     /div[@id='threadlist']
      /div[2]
       /form
        /table
         /tbody[@id='normalthread_1174131']
          /tr
           /th
            /a

И что-то мне не нужно:

/html
 /body
  /div[@id='wp']
   /div[@id='ct']
    /div
     /div[@id='threadlist']
      /div[2]
       /form
        /table
         /tbody[@id='stickthread_1174132']
          /tr
           /th
            /a

Конечно, я мог бы выбрать ихвсе с использованием:

/html/body/div[@id='wp']/div[@id='ct']/div/div[@id='threadlist']
                                           /div[2]/form/table/tbody[@id]/tr/th/a

Но я хочу выбрать только узлы с идентификатором normalthread_xxx.Поскольку каждый узел имеет разные идентификаторы.Другими словами, целевая страница может иметь следующие узлы:

/html/body/div[@id='wp']
           /div[@id='ct']
            /div/div[@id='threadlist']
                 /div[2]/form/table/tbody[@id='normalthread_1174133']
                                    /tr/th/a

/html/body/div[@id='wp']
           /div[@id='ct']
            /div/div[@id='threadlist']
                 /div[2]/form/table/tbody[@id='normalthread_1174134']
                                    /tr/th/a

Можем ли мы иметь что-то похожее на

/html/body/div[@id='wp']
           /div[@id='ct']
            /div/div[@id='threadlist']
                 /div[2]/form/table/tbody[@id='normalthread_XXX']
                                    /tr/th/a

, чтобы отфильтровать все узлы здесь?

1 Ответ

2 голосов
/ 21 декабря 2010

Вы должны иметь возможность использовать starts-with() (часть XPath 1.0):

/html/body/(...)/form/table/tbody[starts-with(@id,'normalthread_')]/tr/th/a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...