C#中将html转换为xml的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中将html转换为xml的实现相关的知识,希望对你有一定的参考价值。

不是用软件去转换,要自己设计算法来实现。
需要详细的算法描述,最好有源码。

我给你些我的建议吧

html的语法格式比XML宽松多了,真正XML格式的网页是XHTML,也就是下一代HTML,他的格式和XML差不多,很严谨的。

如果你不想利用某些HTML和XML互转工具,自己编的话,有一定难度。

1.HTML的节点可以没末节点,你需要不停扫描<,>,/,这三个符号以检查是否漏掉末节点,并补充。
2.HTML节点还可以不规则嵌套,你需要对已读入节点进行顺序存储,或用栈的数据结构来存储,并验证其层次正确性,最终正确顺序的节点,期间还得缓存节点值,或属性值。
3.HTML不同于XML,许多HTML节点有特殊的意义,许多HTML节点比如<b>,<hr/>都需要经过特殊处理才行。

在技术上,为保证性能,还要在一下方面有加强。
1.强大的字符串扫描,和解析器,此工作也巨大,但网上源码很多,建议到google英文里搜索,HTML parser,XML parser(解析器),有很多c#,java,c++的源代码可以利用,没有强大的解析器,跟本无法读懂文件。
2.System.Xml空间的详细运用,除了简单的XMLWriter,还必须学会XMLDocument,XmlNode,能够动态操控XML。还有Xpath技术,操作XMl很有效率。
3.适当还会运用到正则表达式,来处理字符串匹配问题,尤其是节点的操作,即使是再好的字符串查找算法,有时也不如正则表达式,因此system.Text 中的Regex类要掌握好。
4.会控制WinForm中的WebBrower控件
当然,即使你不打算自己做,或已找到了源代码,要想读懂,也必须要以上的知识。

至于工具,网上有,源码还哪找,有java的,但下载不下来。
这是著名的W3C(Html,xml等技术的创始组织)的转换工具,里面也有一些介绍,相信会有用的。
http://www.w3.org/People/Raggett/tidy/

有一个用C#编的转换器,但付费后才可看到源代码
http://www.chilkatsoft.com/downloads.asp
http://www.example-code.com/csharp/html2xml.asp

还有一些软件,stylus的产品不错!
http://www.stylusstudio.com/html_to_xml_importer.html
参考技术A 其实html中table本身就是xml格式的,只是现在需要把表格的标签生成到一个纯xml文件。
具体实现方法如下:
1、后台办法:
string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + tablename.InnerHtml;

2、前台取法:
前台直接使用Jquery更方便
var xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +$("tablename").html();
表格代码如下
[code=html] <table id="tablename" runat="server" >
<tr>
<td></td>
</tr>
</table>[/code]

后台需要加上这两个 id="tablename" runat="server"
参考技术B 服务端代码使用dom模式打开html,然后根据dom的层来生成xml

以上是关于C#中将html转换为xml的实现的主要内容,如果未能解决你的问题,请参考以下文章

在c#中将XML文件转换为csv文件格式

在 C# 中将 JSON 数组转换为 XML

如何在c#中将XML转换为自定义对象[重复]

如何在 C# 中将 Xml 转换为 Json,反之亦然

如何在c#中将xml文档转换为数据表

如何在 C# 中将 HTML 转换为文本?