有多种方式可以在.NET 平台进行HTML文件解析、数据提取,其中最简单、稳妥的办法是先使用工具将Html文档整理成XML文档,再通过XML Dom模型或XPath灵活地进行数据处理。SGML便是一个Html文档整理工具类库:

Microsoft的XML大师Chris Lovett专门开发了一个SGML解析器,叫做SgmlReader,它可以解析HTML文件,甚至将它们转换成一个格式规范的结构。 SgmlReader派生于XmlReader,这就是说,你可以像运用诸如XmlTextReader这样的类来解析XML文件那样来解析HTML文 件。

这是一段示例代码:

public static XmlDocument ConvertHtmlToXml(string html)

using (SgmlReader sgmlReader = new SgmlReader()) {

sgmlReader.DocType = "HTML";

sgmlReader.InputStream = new StringReader(html);

using (StringWriter stringWriter = new StringWriter()){

using (XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter))

{

while (!sgmlReader.EOF) {

xmlWriter.WriteNode(sgmlReader, true);

}

}

}

}

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.LoadXml(stringWriter.ToString());

return xmlDoc;

主页:http://code.msdn.microsoft.com/SgmlReader

语言:英文  授权形式:开源

相关网址:

http://msdn.microsoft.com/en-us/library/aa302299.aspx

下载页(SourceForge)  SgmlReader 1.8   MSDN代码库

将Html文档整理为规范XML文档相关推荐

  1. 使用xsl将xml转化为HTML文档,基于XSL将XML文档转换为HTML格式文档的方法与流程

    技术特征: 1.一种基于XSL将XML文档转换为HTML格式文档的方法,其特征在于,包括: S1,新建一个与XML文档同名的HTML格式文档: S2,定义转换算法,实现XML文档到HTML格式文档的转 ...

  2. XML文档类型定义DTD

    DTD概述 DTD用来定义XML文档的结构,它包含一系列规则说明,以确保XML文档的一致性和有效性 DTD定义了XML文档可用的词汇(元素和属性的名称)和结构: 元素名称,包括根元素 元素的属性及属性 ...

  3. xml与oracle对比,Oracle XML DB和DB2 pure XML在XML文档存储查询性能方面的比较分析

    0引言随着互联网和信息化技术的快速发展,医院在逐步完成医院信息数字化建设过程中,它的核心技术之一就是电子病历的数字化管理和应用.电子病历包括病人就诊或治疗的全部临床信息,这些信息一般由数字.文字.图形 ...

  4. 利用VC++与MSXML解析XML文档

    一.文档对象模型(DOM) DOM是Document Object Model(文档对象模型)的简称,是对XML文档进行应用开发.编程的应用程序接口(API).作为W3C公布的一种跨平台.与语言无关的 ...

  5. xml文档声明及基本语法

    ---------------------------------------xml文档声明及基本语法------------------------------------------- XML文档 ...

  6. xml文档的头部说明

    近来学习xml文档, 对于头部的用法不是特别理解 整理一下思路, 如果有错误欢迎指出 XML 文档必须有根元素 XML 文档必须有一个元素是所有其他元素的父元素.该元素称为根元素. 使用默认命名空间 ...

  7. VC++ MSXML创建XML文件以及对XML文档解析

    VC++ MSXML创建XML文件以及对XML文档解析 转自http://www.newxing.com/Tech/Program/Cpp/703.html // XmlCreationDemo.cp ...

  8. Google Maps API 进级:通过XML文档加载Gpolyline或者Gpolygon

    转自:http://hi.baidu.com/xfm_zhr/blog/item/20e2e6f99c723e5e242df229.html 1.       通过XML文档加载Gpolyline或者 ...

  9. python批量生成,用python批量生成简单的xml文档

    最近生成训练数据时,给一批无效的背景图片生成对应的xml文档,我用python写了一个简单的批量生成xml文档的demo,遇见了意外的小问题,记录一下. 报错问题为:ImportError: No m ...

最新文章

  1. hellowolrd 的系统调用
  2. debug —— set args调试命令(作为程序运行时的参数)
  3. hdu5040 不错的广搜旋转的摄像头
  4. Android studio2.3.3升级3.1.2坑
  5. 在余额宝里放30万,每天在家什么都不干,利息够生活吗?
  6. Java调试器和超时
  7. python爬虫爬取页面源码在本页面展示
  8. 百度BML 图像分类-多标签在线API调试结果记录
  9. Linux下进程/程序网络带宽占用情况查看工具 -- NetHogs
  10. 禁止文本框输入空格和回车
  11. 软件测试流程改进的几点看法
  12. matlab神经网络训练精度,关于提高MATLAB神经网络精度的问题
  13. 华为ENSP 三层交换
  14. 农历24节气日期计算公式
  15. treeset可以重复吗_买了好几份意外险,可以重复理赔吗?
  16. 华为自带邮箱下载_华为用户进来看!微信主题气泡教程!怎么在微信里面设置气泡主题?...
  17. My Sql报错:1273 - Unknown collation: ‘utf8_chinese_ci‘
  18. HTML5新特性history
  19. linux18安装anyconnect4.9遇到I/O问题
  20. 程序员一定会有35岁危机吗?三分天注定,七分靠打拼

热门文章

  1. OpenGL Cubic Bezier三次贝塞尔曲线修补实例
  2. c++Interpolation search插值搜索的实现算法之二(附完整源码)
  3. C++最大数的幂 largest power实现算法(附完整源码)
  4. QT的QHistoryState类的使用
  5. QT的QDateTimeAxis类的使用
  6. QT的QBufferDataGenerator类的使用
  7. Kettle使用_25 改变文件编码压缩与邮件
  8. 计算机专业需要转正定级吗,全日制本科考进事业单位,没有取得初级资格职称,转正后能直接聘用为专业技术十二级岗位吗?...
  9. Light-Head R-CNN相关资料
  10. 迁移学习--Xception