Как получить определенную X-ю позицию узла, используя xpath? - PullRequest
1 голос
/ 23 сентября 2011

Это мой XML-документ.

<w:document>
<w:body>
   <w:p>para1</w:p>
   <w:p>para2</w:p>
   <w:p>para3</w:p>
   <w:p>para4</w:p>
   <w:p>para5</w:p>
   <w:p>para6</w:p>
   <w:p>para7</w:p> 
   <w:p>para8</w:p>
   <w:p>para9</w:p>
   <w:p>para10</w:p>
</w:body>
</w:document>

Теперь я хочу получить текст седьмого .ie, Para7.

Как мне его получить?

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Вы можете индексировать в выражение XPath, используя [] скобки.Например, вы можете использовать //w:p[7] для доступа к седьмому элементу.

Обратите внимание, что индексация XPath - это индексация на основе 1, а не индексация на основе 0.

0 голосов
/ 23 сентября 2011

Использование :

/*/*/*[7]/text()

Если вы правильно зарегистрировали пространства имен с помощью API вашего движка XPath, вы можете использовать:

/w:document/w:body/w:p[7]/text()

Примечание:

Имейте в виду, что существуют проблемы с использованием оператора [] вместе с псевдооператором //: в этом конкретном простом случае выражение

//w:p[7] 

выбираеттребуемый элемент, однако обычно он выбирает каждый w:p элемент, который является седьмым (в порядке документа) w:p дочерним по отношению к его родительскому элементу .

Таким образом, при оценкеэтот документ :

<w:document xmlns:w="w:w">
    <w:body>
     <a>
        <w:p>para1</w:p>
        <w:p>para2</w:p>
        <w:p>para3</w:p>
   </a> 
   <b>
        <w:p>para4</w:p>
        <w:p>para5</w:p>
        <w:p>para6</w:p>
        <w:p>para7</w:p>
        <w:p>para8</w:p>
        <w:p>para9</w:p>
        </b>
        <w:p>para10</w:p>
    </w:body>
</w:document>

выражение //w:p[7] ничего не выбирает .

Однако при оценке этого документа :

<w:document xmlns:w="w:w">
    <w:body>
     <a>
        <w:p>para1</w:p>
        <w:p>para2</w:p>
        <w:p>para3</w:p>
        <w:p>para4</w:p>
        <w:p>para5</w:p>
        <w:p>para6</w:p>
        <w:p>para7</w:p>
        <w:p>para8</w:p>
   </a>
   <b>
        <w:p>para9</w:p>
        <w:p>para10</w:p>
        <w:p>para11</w:p>
        <w:p>para12</w:p>
        <w:p>para13</w:p>
        <w:p>para14</w:p>
        <w:p>para15</w:p>
    </b>
 </w:body>
</w:document>

то же выражение выбирает :

<w:p xmlns:w="w:w">para7</w:p>
<w:p xmlns:w="w:w">para15</w:p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...