最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】C#中的HTML解析

C# crifan 5749浏览 0评论

之前已经整理了:

【整理】C#中的HTML解析

现在继续折腾。

1.有空再去试试:

Html Agility Pack

2.搜

C# beautifulSoup

而找到:

BeautifulSoup similar for C# [closed]

3.去试试:

SGMLReader

参考官网代码,把示例代码添加进来了:

using Sgml;
using System.Xml;
using System.IO;

        XmlDocument FromHtml(TextReader reader)
        {

            // setup SgmlReader
            Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
            sgmlReader.DocType = "HTML";
            sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
            sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
            sgmlReader.InputStream = reader;

            // create document
            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;
            doc.XmlResolver = null;
            doc.Load(sgmlReader);
            return doc;
        }

4.然后再去参考:

SgmlReaderDll使用

去看看如何使用。

最后,经过简单修改,就可以将html转换为xml的document了:

using Sgml;
using System.Xml;
using System.IO;

XmlDocument htmlToXmlDoc(string html)
{

    // setup SgmlReader
    Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
    sgmlReader.DocType = "HTML";
    sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
    sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
    //sgmlReader.InputStream = reader;
    sgmlReader.InputStream = new StringReader(html);

    // create document
    XmlDocument doc = new XmlDocument();
    doc.PreserveWhitespace = true;
    doc.XmlResolver = null;
    doc.Load(sgmlReader);

    return doc;
}

 

5.后来,分别遇到并解决了:

【已解决】C#中对于XmlNode,去用SelectNodes或SelectSingleNode查找,结果找不到(子节点)

6.

【已解决】查找C#的XmlNode的当前节点下的某个子节点

7.

【已解决】网页中的图片,一张(png)图片包含多张图片,如何通过css去定位对应的子png图片

转载请注明:在路上 » 【记录】C#中的HTML解析

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.188 seconds, using 22.08MB memory