我正在使用HtmlAgilityPack来解析和操作html文本。但是,DocumentNode.OuterHtml似乎缺少结束标记。
现在要解决问题,我只是解析并获取OuterHtml(无操作):
var document = new HtmlDocument();
document.LoadHtml(myHtml);
result = document.DocumentNode.OuterHtml;
原文:(myHtml)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>
MyTitle
</title>
OutputHtml :(结果)请注意,元素未关闭
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="X-UA-Compatible" content="IE=Edge"><title>
MyTitle
</title>
同样,所有输入和img元素都是打开的。 (请不要回答它不应该是一个问题。它应该不是,但确实如此。)Chrome无法正确呈现页面。继续阅读。
更奇怪的是:
原文:(myHtml)
<option value="10">Afrikaans</option>
<option value="11">Albanian</option>
<option value="12">Arabic</option>
<option value="13">Armenian</option>
<option value="14">Azerbaijani</option>
<option value="15">Basque</option>
OutputHtml :(结果)请注意,缺少完整的显式结束标记
<option value="10">Afrikaans
<option value="11">Albanian
<option value="12">Arabic
<option value="13">Armenian
使用HtmlAgilitPack最新的NuGet包:id =&#34; HtmlAgilityPack&#34;版本=&#34; 1.4.9&#34;
答案 0 :(得分:3)
加载文档时可以设置几个选项。
<强> OptionAutoCloseOnEnd 强>
定义是否必须在结束时或直接在文档中关闭非闭合节点。将此设置为true实际上可以更改浏览器呈现页面的方式。
document = new HtmlDocument();
document.OptionAutoCloseOnEnd = true;
document.LoadHtml(content);
相关资料来源: