자녀를 포함하여 요소의 모든 텍스트 노드를 가져 오려고하지만 어떤 이유로 그것이 전체 문서 HTML을 제공합니다.
이것이 내가 생각해 낸 것입니다.
HtmlAgilityPack.HtmlNode el = htmlDoc.DocumentNode.SelectSingleNode("(//div[@class='TableContainer'])[" + index + "]");
if (el != null)
{
foreach (HtmlNode node in el.SelectNodes("//text()"))
{
Debug.WriteLine("text=" + node.InnerText.Replace(" ", " "));
}
}
전체 text=line
을 인쇄 text=line
. 나는 여기에 //text()
찾은 스 니펫 인 //text()
문제가 있다고 확신하지만, 나는 그것을하는 다른 방법을 모른다. 그리고 나는 그것에 미쳐 가고있다.
상대적 XPath 표현식을 사용해야합니다. 즉, el
컨텍스트 노드에 상대적이어야합니다.
HtmlAgilityPack.HtmlNode el = htmlDoc.DocumentNode.SelectSingleNode("(//div[@class='TableContainer'])[" + index + "]");
if (el != null)
{
foreach (HtmlNode node in el.SelectNodes(".//text()"))
{
Debug.WriteLine("text=" + node.InnerText.Replace(" ", " "));
}
}
"//text()"
는 문서 루트 노드의 모든 자손 텍스트 노드를 선택합니다.
자세한 내용은 XPath 사양에서 위치 경로 및 약식 구문 을 참조하십시오.
//para
는 문서 루트의 모든 para 자손을 선택하여 문맥 노드와 같은 문서의 모든 para 요소를 선택합니다
.//para
는 컨텍스트 노드의 하위 요소 자손을 선택합니다.