質問: 현재 HTML 레이아웃이 있습니다. ``` //table[1] //table[2] //table[1]//table[1] INFO 1 INFO 2 INFO 3 INFO 4 //table[1]//table[2] Name Quantity Apples 10 //table[1]//table[3] ``` `//table[1]//table[2]` 내에있는 데이터를 가져 오려고하지만 아직 다음과 같은 경우 null HtmlNode ( `System.NullReferenceException` )가 계속 발생합니다. **does not ':** `doc.DocumentNode.SelectSingleNode("//table[2]//tbody//tr//td//table[2]//tbody//tr");` , 나는 왜이 문법으로 잘 작동하는지 `//table[1]//table[1]` 대한 데이터를 얻으려고 할 때 왜 이것이 발생하는지 확신하지 못한다. **작품 :** `doc.DocumentNode.SelectSingleNode("//table[2]//tbody//tr//td//table[1]//tbody//tr");` Html Agility Pack에서 색인 생성이 어떻게 작동하는지 오해하고 있습니까?
回答: `//table[2]` 는 XPath로 인해 **같은 부모** 내 **에서** 두 번째 `` 요소를 반환 `` . > ( `]` )의 우선 순위는 ( `//` 및 `/` )보다 높습니다. [ [참고 용 ] > > 귀하의 경우 각 `` 에는 하나의 `` 만 있으므로 Xpath 표현식은 아무 것도 반환하지 않습니다. 한 가지 가능한 해결책은 우선 순위를 변경하기 위해 대괄호를 사용하는 것입니다. ``` (//table[2]//tbody//tr//td//table)[2]//tbody//tr ``` Xpath 위에는 내부 XPath `//table[2]//tbody//tr//td//table` 의해 반환 된 모든 `` 의 두 번째 `` 요소를 가져옵니다. 그런 다음 해당 `` 에서 하위 항목 `//tbody//tr` 요소를 계속 반환합니다.