如何将html转换成xml,跪求 请说明具体算法和用到的工具

html-css019

如何将html转换成xml,跪求 请说明具体算法和用到的工具,第1张

我给你些我的建议吧

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等技术的创始组织)的转换工具,里面也有一些介绍,相信会有用的。

有一个用C#编的转换器,但付费后才可看到源代码

还有一些软件,stylus的产品不错!

if(window.ActiveXObject){xmlDoc = new ActiveXObject('Microsoft.XMLDOM')

xmlDoc.async = false

xmlDoc.load(xmlFile)}else if (document.implementation &&document.implementation.createDocument){xmlDoc = document.implementation.createDocument('', '', null)xmlDoc.async = false

xmlDoc.load(xmlFile)}else{return null}return xmlDoc}function startload (){var option,optiontext

if(xmlDoc == null){alert('您的浏览器不支持xml文件读取!')}else{var DeptXML = xmlDoc.getElementsByTagName("department")

//alert(DeptXML.length)

for (var i = 0 i <DeptXML.length i ++ ){option = document.createElement('option')

option.setAttribute("value",DeptXML[i].getAttribute('name'))

optiontext = document.createTextNode(DeptXML[i].getAttribute('name'))

option.appendChild(optiontext)

//option.innerHTML = DeptXML[i].getAttribute('name')

document.getElementById("cdepname").appendChild(option)}}}function clearList(){var username = document.getElementById("username")

while (username.childNodes.length >0){username.removeChild(username.childNodes[0])}}function refreshList (){clearList()

var option,optiontext

if(xmlDoc == null){alert('您的浏览器不支持xml文件读取!')}else{var selectDep = document.form1.cdepname.options[document.form1.cdepname.selectedIndex].text

/*var selectDep =document.getElementById("cdepname").options[document.getElementById("cdepname").options.selectedIndex].value*/

//alert(selectDep)

var DeptXML = xmlDoc.getElementsByTagName("department")

for (var i = 0 i <DeptXML.length i ++ ){if (DeptXML[i].getAttribute("name") == selectDep){var DeptSel = DeptXML[i]break}}for (i=0 i <DeptSel.childNodes.lengthi++){chen = new Option(DeptSel.childNodes[i].getAttribute("name"),DeptSel.childNodes[i].getAttribute("name"))

document.form1.username.options.add(chen)}}}function CheckUser (){//alert('sdfsadf')

if(xmlDoc == null){alert('您的浏览器不支持xml文件读取!')}else{var selectDep = document.form1.cdepname.options[document.form1.cdepname.selectedIndex].text

var DeptXML = xmlDoc.getElementsByTagName("department")

for (var i = 0 i <DeptXML.length i ++ ){if (DeptXML[i].getAttribute("name") == selectDep){var DeptSel = DeptXML[i]break}}var selectPer = document.form1.username.options[document.form1.username.selectedIndex].text

for (i=0 i <DeptSel.childNodes.lengthi++){if (DeptSel.childNodes[i].getAttribute("name") == selectPer){if (DeptSel.childNodes[i].getAttribute("pwd") == document.getElementById("pwd").value){//alert('登陆成功!')