Html敏捷包如何从除一个特定节点之外的所有节点获取文本

时间:2013-08-06 08:37:42

标签: html html-agility-pack

我有一个由

制作的html文档
<title>Something</title>
<p>Text1</p1>
<p>Text2</p1>
<p>Text3</p1>
...

我想从中获取没有Title元素的文本。我想只提取:

Text1
Text2
Text3

你知道我怎么做吗?

现在我这样做:

var doc = new HtmlAgilityPack.HtmlDocument();

                doc.Load(MyFile.html);

                var stringWriter                        = new StringWriter();

                AgilityPackEntities.AgilityPack.ConvertTo(doc.DocumentNode, stringWriter);

                stringWriter.Flush();

                document.DocumentContent                = stringWriter.ToString();

                return document;

* document是方法参数。

1 个答案:

答案 0 :(得分:0)

你使自己变得比现在更难。

将文档加载为HtmlAgilityPack.HtmlDocument

HtmlDocument doc = new HtmlDocument();

使用Load()LoadHtml()将HTML加载到文档对象中。

作为一个例子,以下有五段。

doc.LoadHtml("<title>Something</title><p>Text1</p><p>Text2</p><p>Text3</p><p>Text4</p><p>Text5</p>");

要仅获取前三个段落,请将它们全部选中并迭代它们:

        var nodes = doc.DocumentNode.SelectNodes("//p");
        for (int i = 0; i < 3; i++)
        {
            HtmlNode node = nodes[i];
            Console.WriteLine(node.InnerText);
        }

导致打印输出

Text1
Text2
Text3