2011-12-16 59 views
2

我想下载一个网页并解析它。我需要到达html文档的每个节点。所以我使用WebClient进行下载,这非常完美。然后我用下面的代码片段解析文档:通过C#解析网页,XmlDocument.LoadXml

WebClient client = new WebClient(); 

Stream data = client.OpenRead("http://web.cs.hacettepe.edu.tr/~bil339/"); 
StreamReader reader = new StreamReader(data); 
string xml = reader.ReadToEnd(); 

data.Close(); 
reader.Close(); 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.loadXml(xml); 

在最后一行,程序等待一段时间,然后崩溃。它说,在HTML代码中有错误,这是不应该的,不应该在这里,等等。 任何建议来解决这个问题?其他技术来解析HTML代码是受欢迎的(当然,在C#中)。

+0

loadxml需要一个xml文档,如果是html页面,它会抛出异常 – 2011-12-16 18:59:30

回答

7

使用HTMLAgilityPack解析HTML。格式良好的HTML不是XML,不能像这样解析。例如,它缺少所有XML文件需要的<?xml version="1.0" encoding="UTF-8"?>序言。 HTML敏捷包更为宽容。