目前,我发现能够从包含HTML的字符串中操作DOM的最佳方法是:
WebBrowser webControl = new WebBrowser();
webControl.DocumentText = html;
HtmlDocument doc = webControl.Document;
有两个问题:
WebBrowser
个对象! 有什么想法吗?
答案 0 :(得分:17)
我搜索了GooglePlex for HTML,我发现Html Agility Pack我不知道是不是这样,我现在正在下载试试。
答案 1 :(得分:7)
取决于您要做的事情(也许您可以提供更多详细信息?)并且取决于HTML是否格式正确,您可以将其转换为{{1 }}:
XmlDocument
然后,您可以轻松地操作它,而不需要System.Xml.XmlDocument x = new System.Xml.XmlDocument();
x.LoadXml(html); // as long as html is well-formed, i.e. XHTML
实例。至于线程,我对WebBrowser
的实现知之甚少,不知道该部分的答案。
如果文档格式不正确,您可以使用NTidy(HTML Tidy的.NET包装器)将其初始化为形状;我不得不为一个项目做过一次,这真的不是太糟糕。
答案 2 :(得分:6)
JasonBunting已经发布了这个,但它确实可以在HTML整理中使用.net包装并将其加载到XmlDocument中。
我之前使用过这个.net包装器:
http://www.codeproject.com/KB/cs/ZetaHtmlTidy.aspx
并且有点像这样实现:
string input = "<p>crappy html<br <img src=foo></div>";
HtmlTidy tidy = new HtmlTidy()
string output = tidy.CleanHtml(input, HtmlTidyOptions.ConvertToXhtml);
XmlDocument doc = new XmlDocument();
doc.LoadXml(output);
很抱歉,如果考虑重新发布:)
答案 3 :(得分:3)
这是一个老问题。现在有: