XPath를 사용하여 C#의 일부 HTML 파일을 쿼리 할 때 약간의 문제가 발생했습니다. 1,2,3,4 (내가 할 노력하고있어하면 B와 C 노드 사이 만 요소를 얻는 것입니다, 지금XPath - 두 노드 사이의 첫 번째 형제 그룹 선택
<table id="theTable">
<tbody>
<tr class="theClass">A</tr>
<tr class="theClass">B</tr>
<tr>1</tr>
<tr>2</tr>
<tr>3</tr>
<tr>4</tr>
<tr>5</tr>
<tr class="theClass">C</tr>
<tr class="theClass">D</tr>
<tr>6</tr>
<tr>7</tr>
<tr>8</tr>
<tr>9</tr>
<tr>10</tr>
<tr>11</tr>
<tr>12</tr>
<tr>13</tr>
<tr>14</tr>
<tr>15</tr>
<tr class="theClass">E</tr>
<tr class="theClass">F</tr>
<tr>16</tr>
<tr>17</tr>
<tr>18</tr>
<tr>19</tr>
<tr>20</tr>
<tr>21</tr>
<tr>22</tr>
</tbody>
</table>
:
좋아, 먼저 여기 샘플 HTML의 , 5,). 여기
는 지금까지 시도 내용은 다음과 같습니다,using System;
using System.Xml.XPath;
namespace Test
{
class Test
{
static void Main(string[] args)
{
XPathDocument doc = new XPathDocument("Test.xml");
XPathNavigator nav = doc.CreateNavigator();
Console.WriteLine(nav.Select("//table[@id='theTable']/tbody/tr[preceding-sibling::tr[@class='theClass'] and following-sibling::tr[@class='theClass']]").Count);
Console.WriteLine(nav.Select("//table[@id='theTable']/tbody/tr[preceding-sibling::tr[@class='theClass'][2] and following-sibling::tr[@class='theClass'][4]]").Count);
Console.ReadKey(true);
}
}
}
이 코드는, 위의 HTML을 통해 실행 (19)와 5 그래서에만 두 번째 XPath 식을 출력 작동하지만이이 요소를 검색 때문 두 요소 앞에 class=theClass
이 있고 그 뒤에 4 개가 있습니다.
지금부터 문제가 시작됩니다. 얼마나 많은 그룹이 그것을 따르더라도, <td class="theClass"></td>
태그 뒤에 오는 첫 번째 요소 그룹 만 반환하는 단일 식을 작성하고 싶습니다. 나는이 HTML
<table id="theTable">
<tbody>
<tr class="theClass">A</tr>
<tr class="theClass">B</tr>
<tr>1</tr>
<tr>2</tr>
<tr>3</tr>
<tr>4</tr>
<tr>5</tr>
<tr>6</tr>
</tbody>
</table>
을 통해 내 코드를 실행하면
는 출력 0, 0
은 그래서 더 좋은하지 않습니다.
아무도 아이디어가 있습니까?
감사합니다.
본 적이 없습니다. 예상되는 결과는 무엇입니까? –
@ChuckSavage 첫 번째 HTML의 경우 1,2,3,4,5 요소가 반환되고 두 번째 HTML의 경우 elemenets 1,2,3,4,5,6이 반환됩니다. –