HtmlAgilityPack:无法解析endline(忽略结束行)

时间:2017-02-21 13:31:08

标签: c# .net html-agility-pack

我在解析以下html时遇到了问题:

<tr>
<td><p><b>
<span>Company:</span></b>
<span>Test</span>
</p></td>
</tr>

<tr>
<td><p><b>
<span>Company:</span></b>
<span>Test 2</span>
</p></td>
</tr>

我的代码是:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"email.txt");
Console.WriteLine(doc1.DocumentNode.InnerText);

我有以下输出:Company:TestCompany:Test 2,但我想要

Company: Test
Company: Test 2

所以,问题是没有解析换行符。

P.S。:doc.OptionWriteEmptyNodes = true;没有任何区别。

更新:我的意思是,无论html是什么,都没有解析结束行。即使有<br />标签等等。

1 个答案:

答案 0 :(得分:1)

你的html中没有换行符。即使在您的浏览器中,您也看不到它,两个标签都会并排显示。你的实际要求是什么? Document.InnerText只是并排返回所有文本控件值。

如果你不想要你必须选择你想要的东西(例如所有跨度),然后使用String.Join(Environment.NewLine, allInnerText)

var allInnerTexts = doc.DocumentNode.SelectNodes("//text()")
   .Select(n => n.InnerText.Trim())
   .Where(text => !String.IsNullOrEmpty(text));
Console.WriteLine(String.Join(Environment.NewLine, allInnerTexts));