我实际上需要将一些非常旧的 HTML 解析为 PDF 文件,我已经有一个可以执行此操作的 jar,但它只接受合法的 XHTML 代码。所以我必须解析我的旧 HTML 代码,以便 jar 接受它。我很清楚我解析的 HTML 代码看起来如何,我的想法是使用John Resig 的 HTML-Parser将某些标签(img、br、meta)解析为直接 XML,这将具有所需的对它们产生影响(主要是结束标签)。
我的实际尝试如下所示:
function fixTags() {
var tagsToParse = new Array( "br", "img", "input", "meta" );
for(i = 0; i < tagsToParse.length; i++) {
var elements = document.getElementsByTagName(tagsToParse[i]);
for(j = 0; j < elements.length; j++) {
elements[j].outerHTML = HTMLtoXML(elements[j].outerHTML);
}
}
}
这里的问题是浏览器会将元素的新代码解释为 HTML4,这导致他更改回我想要更改的内容。例如 a在经过解析器后<br>
变成 a ,但浏览器实际上会将其解释为 HTML4 并且元素的 outerHTML 属性将再次为。<br/>
<br>
我第一次尝试解决这个问题是强制文档暂时为 XHTML:
var root = document.getElementsByTagName("html")[0];
root.setAttribute("xml", "http://www.w3.org/1999/xhtml");
但这似乎并没有在他的行为中打扰浏览器。
从 dom 构建字符串树的“明显”解决方案,替换那里的字符串并将树遍历到我想要的字符串对于这个“小”问题来说似乎有点过于繁重和复杂,这就是我问你的原因。
因此,如果有人对更简单的解决方案有想法,我会非常高兴,该应用程序仅限 IE,因此也接受 IE 专有解决方案。