Html Agility Pack Xpath

3

我可以使用Html Agility Pack来使用这个xPath吗?

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>

我需要在不指定ul标签的情况下提取“Test2 Text”的内容,使用xPath。

展示一些源HTML并描述您期望的结果将会很有帮助。 - Andrey Korneyev
1个回答

5
你可以尝试使用这个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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接