使用HttpWebRequest获取网页的内容,然后通过SgmlReader转换成xml友好格式的html,载入到xmlDocument,就可以进行分析了.
但是有个问题,由于网页的html标签不区分大小写,各个网站的html标签有的大小有的小写,甚至大小写混杂,SgmlReader不会把html的标签都转成小写的,经过SgmlReader转换的html载入到xmlDocument,标签也可能是大小写混杂,而xml中的选择查找语句是大小写敏感的.这就给分析网页带来了困难.
SgmlReader是提供源码的,我试着在SgmlReader中把所有输出的字符都改成小写的,测试后发现,一旦html中含有"<![CDATA"这样的标签转成小写的后,载入到xmlDocument时就会出错,提示"'cdata' is an unexpected token. The expected token is 'CDATA['. Line 1, position 124."
似乎还不能把所有的标签都转成小写的,迷茫了,哪位有经验的朋友指点一下,多谢了!

解决方案 »

  1.   

    你把这样特殊的标记特别对待一下,不转换为小写。xml就是区分大小写的,否则就是不同的element,XPath expression不能不区分大小写地select到elements的。
      

  2.   

    我添加SgmlReaderDll.dll的时候提示“不是有效的dll或者com组件”,为什么啊
    我用的是1.6.2195.24675
      

  3.   

    想办法把这些关键字处理成需要的大小写格式,到w3c的网站找找xml相关标准
      

  4.   

    找到所有HTML的标签文本集合,然后把此集合中的文本变成小写就可以了.
      

  5.   

    我添加SgmlReaderDll.dll的时候提示“不是有效的dll或者com组件”,为什么啊
      

  6.   

    time_is_life(今夜太冷) 你自己编译一下然后再试试
      

  7.   

    先按你做的全转小写,然后用正则式把<![cdata[给替换成<![CDATA[
      

  8.   

    明白了,原来是用.net2.0做的
    一编译就说找不到StringComparison
    查了一下,c#2.0中才有StringComparison
    郁闷,不知道有没有用1.1做的
      

  9.   

    网上说sgmReader也不是尽善尽美的,
    我问了一下java编程的人,他们都用HtmlParser,挺好用
    现在也有这个.net版本的了
    楼主可以看看这个网址:
    http://www.netomatix.com/Products/DocumentManagement/HTMLParserNet.aspx
      

  10.   

    sgmlReader有支持.net1.1的吗?
    我在www.gotdotnet.com上面下的,只有1.6版,
    我想以前的版本应该有支持.net1.1的
    哪位知道告诉我一声,谢谢啦
      

  11.   

    〉HtmlParser要99.99美金哦Community Edition
    We offer a community edition of the library for free download. This edition has all the features of professional edition version except support for mime types likes PDF, MS office documents, Xml etc. and multithreaded crawling capabilities. But if your needs are limited to text/html mime type then this is a great library to keep in your tool chest.Download Free Community Edition Version 
      

  12.   

    time_is_life(今夜太冷)你有没有试过这个HtmlParser?
      

  13.   

    因为时间比较紧,我还没有来的及,暂时也准备用sgmlReader,以后再试验这个
    可是现在找不到支持.net1.1的sgmlReader
      

  14.   

    sgmlReader应该支持1.1,你看源码中提供了三种sln,解决方案名最后分别以70,71,80结束,应该是分别对应vs2002,vs2003,vs2005的
      

  15.   

    >sgmlReader应该支持1.1,你看源码中提供了三种sln,解决方案名最后分别以70,71,80结束,>应该是分别对应vs2002,vs2003,vs2005的不知的,我三个解决方案都编译了,都提示找不到StringComparison
    三个解决方案中都用到了StringComparison
      

  16.   

    支持1.1,我下载的版本就是1.1的,不过比较早了另外sgmlreader确实不是很完美,我碰到过一些不规范的html格式化不了
      

  17.   

    我研究了一下HtmlParser,写了一个例子http://time-is-life.cnblogs.com/articles/335554.html希望对你有帮助
      

  18.   

    关键是转换好的html要能把html都统一大小写,然后可以载入到xmlDocument才有实际意义,可以用xml parser就行各种分析了
      

  19.   

    还有,这个sgmlReader转化html代码有时候会转化错,有时会把一些stylesheet的内容前面加上<!--[DATA这个标签,并且会把stylesheet前面一个字符给吃掉.
    今天试用一下html parser看看什么效果
      

  20.   

    看来html parser也不是我想要的东西,我需要的是能够把不够规范的html转换为友好格式的xhtml,然后载入到xmlDocument中.html parser是完全自己承担了分析html的所有工作.