HTML 민첩성 팩 Xpath

c# html-agility-pack xpath

문제

이 xPath를 Html Agility Pack과 함께 사용하려면 어떻게해야합니까?

xPath :

//div[@class='test']/(text())[last()]

나는이 코드를 시도했다 :

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='test']/(text())[last()]"))
            {
                test = node.InnerText();
            }

Html :

<div class="test">
        <ul>
            <li><b>Test1</b>Test1 Text</li>
            <li><b>Test2</b>Test2 Text</li>
        </ul>
    </div>

xPath에서 특정 ul 태그없이 "Test2 Text"를 추출해야합니다.

수락 된 답변

이 XPath를 사용해보십시오.

(//div[@class='test']//text()[normalize-space()])[last()]

//div[@class='test']//text()[normalize-space()]div 내에서 비어 있지 않은 텍스트 노드를 모두 찾습니다. 그런 다음 [last()] 는 발견 된 모든 텍스트 노드에서 마지막 노드 만 반환합니다.

데모 예제 (온라인으로 볼 근무 여기 )

var html = @"<div class='test'>
<ul>
    <li><b>Test1</b>Test1 Text</li>
    <li><b>Test2</b>Test2 Text</li>
</ul>
";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("(//div[@class='test']//text()[normalize-space()])[last()]");
Console.WriteLine(node.InnerText);

출력 :

Test2 Text


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