모든 HTML 테이블 행의 첫 번째 및 두 번째 셀 가져 오기

.net html-agility-pack xpath

문제

HTMLAgilityPack을 사용하여 각 행에 특정 셀을 가져 오려고합니다.

foreach (HtmlNode row in ContentNode.SelectNodes("descendant::tr"))
{
    //Do something to first cell
    //Do something to second cell
}

더 많은 세포가 있고, 각 세포는 특별한 치료가 필요합니다. XPath를 사용하여이 작업을 수행하는 방법이 있지만 실제로는 쓸모가 없습니다. 어쩌면 뭔가 있을까?

var cell1 = row.SelectSingleNode("descendant::td:first");

수락 된 답변

행의 하위 인 각 첫 번째 셀을 가져 오려면 다음을 수행 할 수 있습니다.

// from row
var firstCell = row.SelectSingleNode("td[1]");

// each first cell in a table (note: tbody is not always there)
var allFirstCells = table.SelectNodes("tbody/tr/td[1]");

즉, 대괄호와 셀 번호를 사용하십시오. 예외는 다음과 같이 last() 를 사용하여 얻을 수있는 마지막 셀입니다.

// from row
var lastCell = row.SelectSingleNode("td[last()]");

// each last cell in a table
var allLastCells = table.SelectNodes("tbody/tr/td[last()]");

현재 셀 옆에 셀을 가져 오려면 다음과 같이 할 수 있습니다.

// from row
var firstCell = row.SelectSingleNode("td[1]");
var siblingCell = firstCell.SelectSingleNode("./following-sibling::td");

오타가 있거나로드 한 DOM 트리에 요청한 셀이 포함되어 있지 않음을 의미하는 null의 반환 값을 확인할 수 있습니다.


인기 답변

대신 :

descendant::tr

사용 :

descendant::tr/td[not(position() >2)]


Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow