[来源:Saveen Reddy] .NET 框架类库本身没有提供工具分析HTML,以前常用的做法是用正则表达式,或者浏览器控件,或者MSHTML组件,甚至SgmlReader。SgmlReader可以将HTML转化成XML,然后你就可以使用System.Xml命名空间下的类对文件进行查询。
CodePlex上有一个Html Agility Pack项目,是原生的.NET项目,不依赖MSHTML或者ActiveX/COM 对象。其中的HtmlDocument可以加载任何HTML文件(即使该文件是不well-formed的HTML),然后允许你使用类似于System.Xml的对象模型对文件进行查询。
譬如,
HtmlDocument doc = new HtmlDocument();
doc.Load("somehtml.html");
Console.WriteLine(doc.DocumentNode.InnerHtml);
foreach ( HtmlNode node in doc.DocumentNode.SelectNodes("//a"))
{
string url = node.GetAttributeValue("href", "");
Console.WriteLine(url);
}
打印 | 张贴于 2006-10-18 05:09:00 | Tag:.NET ASP.NET/IIS
留言反馈
原html代码:
<form name=f action=/s><input type=text name=wd id=kw size=36 maxlength=100><input type=submit value=百度一下 id=sb><br><br></form>
转换后的xml代码:
<form name="f" action="/s" /><input size="36" name="wd" type="text" id="kw" maxlength="100" /><input value="百度一下" type="submit" id="sb" /><br /><br /></form>
注意到没有,<form ..../>会多了一个“/”,而后面的</form>会被解析成</form>
有那位牛人帮忙解决一下啊
邮箱:topzjf@163.com
期待ing...
可否分析整个 html ,生成一颗标记树呢?
我现在 用正则做,可惜正则表达式写不出。
具体问题麻烦看一下:
http://community.csdn.net/Expert/topic/5765/5765685.xml?temp=.407818
万分感谢!
最近用到这个,找了半天,除了自己写正则没找到其他办法,哪位知道的帮忙说说,谢谢
MSHTML组件,甚至SgmlReader都试过了
今天来试试Html Agility Pack好了
正巧,我计划用类似的这个东西。
以前在考虑用 MSHTML或者ActiveX/COM ,现在多了一种选择。