예상대로 HtmlAgilityPack이 childNodes를 선택하지 않습니다.

.net asp.net c# html-agility-pack xpath

문제

HtmlAgilityPack 라이브러리를 사용하여 페이지의 일부 링크를 구문 분석하려고하지만 메소드에서 예상하는 결과가 표시되지 않습니다. 다음은 링크의 HtmlNodeCollection입니다. 각 링크에 대해 이미지 노드가 있는지 확인한 다음 해당 속성을 구문 분석하지만 linkNode의 SelectNodes 및 SelectSingleNode 메서드는 parentNode가 아닌 linkNode의 childNodes를 검색하는 것으로 보입니까?

HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);
HtmlNodeCollection linkNodes = htmldoc.DocumentNode.SelectNodes("//a[@href]");

foreach(HtmlNode linkNode in linkNodes)
{
    string linkTitle = linkNode.GetAttributeValue("title", string.Empty);
    if (linkTitle == string.Empty)
    {
        HtmlNode imageNode = linkNode.SelectSingleNode("/img[@alt]");     
    }
}

존재하는 경우 linkNode의 이미지 childnode의 alt 속성을 얻을 수있는 다른 방법이 있습니까?

수락 된 답변

"/ img [@alt]"에서 전달 슬래시 접두어를 제거해야합니다. 접두사 접두어는 문서의 루트에서 시작한다는 것을 의미합니다.

HtmlNode imageNode = linkNode.SelectSingleNode("img[@alt]");

인기 답변

xpath 쿼리를 사용하면 "." 검색이 현재 노드에서 시작되어야 함을 나타냅니다.

HtmlNode imageNode = linkNode.SelectSingleNode(".//img[@alt]");


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.