从Div C#StreamReader获取文本

从Div C#StreamReader获取文本,c#,html,text-files,streamreader,C#,Html,Text Files,Streamreader,我正试图从一个充满div的文本文件中获取一个特定的div。 我正在使用streamreader进入文件,但我不知道如何获取完整的div。 在得到div之后,我将把每一行变成一个字符串,它将被添加到列表中。 文本文件如下所示: <div id="#SMINLANGUAGE1 "> English Hello. This is a Test Test 23 </div> <div id="#SMINLANGUAGE2 "> Dutch Hallo. Dit is

我正试图从一个充满div的文本文件中获取一个特定的div。 我正在使用streamreader进入文件,但我不知道如何获取完整的div。 在得到div之后,我将把每一行变成一个字符串,它将被添加到列表中。 文本文件如下所示:

<div id="#SMINLANGUAGE1 ">
English
Hello.
This is a Test
Test 23
</div>
<div id="#SMINLANGUAGE2 ">
Dutch
Hallo.
Dit is een Test
Test 29
</div>
<div id="#SMINLANGUAGE3 ">
Spanish
Hola.
Esto es una Prueba.
Prueba 86
</div>

首先,您需要安装
HtmlAgilityPack
来解析HTML:

Install-Package HtmlAgilityPack
然后,通过选择
//div
路径,我们可以从HTML内容中提取所有可用的div:

    var doc = new HtmlDocument
    {
        OptionOutputAsXml = true,
        OptionCheckSyntax = true,
        OptionFixNestedTags = true,
        OptionAutoCloseOnEnd = true,
        OptionDefaultStreamEncoding = Encoding.UTF8
    };
    doc.LoadHtml(htmlContent);

    var results = new List<string[]>();
    foreach (var node in doc.DocumentNode.SelectNodes("//div"))
    {
        var divContent = node.InnerText;
        if (string.IsNullOrWhiteSpace(divContent))
            continue;

        var lines = divContent.Trim().Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
        results.Add(lines);
    }
var doc=新的HtmlDocument
{
OptionOutputAsXml=true,
OptionCheckSyntax=true,
OptionFixNestedTags=true,
OptionAutoCloseOnEnd=true,
optionDefaultStreamEncode=Encoding.UTF8
};
doc.LoadHtml(htmlContent);
var results=新列表();
foreach(doc.DocumentNode.SelectNodes(“//div”)中的变量节点)
{
var divContent=node.InnerText;
if(string.IsNullOrWhiteSpace(divContent))
继续;
var lines=divContent.Trim().Split(新[]{'\n'},StringSplitOptions.RemoveEmptyEntries);
结果:添加(行);
}

我已经使用CsQuery完成了这一任务。看见
    var doc = new HtmlDocument
    {
        OptionOutputAsXml = true,
        OptionCheckSyntax = true,
        OptionFixNestedTags = true,
        OptionAutoCloseOnEnd = true,
        OptionDefaultStreamEncoding = Encoding.UTF8
    };
    doc.LoadHtml(htmlContent);

    var results = new List<string[]>();
    foreach (var node in doc.DocumentNode.SelectNodes("//div"))
    {
        var divContent = node.InnerText;
        if (string.IsNullOrWhiteSpace(divContent))
            continue;

        var lines = divContent.Trim().Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
        results.Add(lines);
    }