2013-10-04 41 views
0

我使用HtmlAgilityPack加载HTML文件是这样的:如何停止HtmlAgilityPack更改加载页面的源代码?

var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.OptionOutputOriginalCase = true; 
doc.Load(@"c:\ftp\file3.html"); 

然后我使用XPath来选择节点,并得到outerHTML但问题是,我得到一个修改过的页面源,例如我得到:

<font class="hello" id="price"> 

当真正的页面源是

<font class=hello id=price> 

如何避免呢?

+2

我认为HTML敏捷包只是自动更正格式不正确的HTML,大多数浏览器都会做类似的事情。 –

回答

3

你不知道。至少不使用DOM解析器时。

在这种情况下,HTML敏捷性程序包正在接受字符串输入并尽最大努力从该输入中创建有效的DOM。这是无效的:

<font class=hello id=price> 

所以,把它翻译成的东西是有效的:

<font class="hello" id="price"> 

它会尝试任何和在HTML中,所有无效的标记做同样的。如果你不想使用有效的标记,那么DOM解析器可能不适合这项工作。那时你正在使用一个自定义的字符串输入,你必须自己解析它。

+0

是否有其他选项可以轻松地删除网页并检测标签(以及它们之间的innerText),而无需修改源代码? – user2396640

+1

@ user2396640:我看不出DOM解析如何阻止你这样做。如果您想分析HTML,那么解析器首先必须将输入转换为有效的HTML。如果你想解析一些不是真正HTML的自定义字符串,但看起来很像,你自己。 – David

+0

so ..也许我会以任何方式使用它,如果你知道如何告诉我如何使用xpath来达到“复杂”的innerText: innerTEXT user2396640