我在浏览器中使用 xml+xsl 并在 javascript 中处理异步页面,但无法将 xml 处理的tr元素添加到表tbody,因为行元素看起来像纯文本。我发现一些技巧可以通过复制 innerHTML(convertChild 函数)来修复它:
var xmlDom = pageProcessor().transformToDocument(xml);
var root = xmlDom.documentElement;
var tbody = document.getElementById('table-content');
for (var i = 0; i < root.childElementCount; i++) {
tbody.appendChild(convertChild(root.children[i]));
}
function convertChild(source) {
var tmp1 = document.createElement('tbody');
tmp1.appendChild(source);
var tmp2 = document.createElement('tbody');
tmp2.innerHTML = tmp1.innerHTML;
return tmp2.firstChild;
}
pageProcessor 函数返回带有导入的 xsl 样式表的 XSLTProcessor。xml 变量是 Sarissa 库 dom 文档。在调试器中 root.children[i] 看起来是有效的。
如何摆脱这种黑客攻击并将元素正确附加到表中?
更新:
我使用 Firefox 37.0.2
xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rows>
<row><item>key44</item><item>val44</item></row>
<row><item>key45</item><item>val45</item></row>
...
</rows>
我 console.log 将 xslt 处理的每个 html 元素从行项记录到tr td
解决了:
谢谢你,马丁霍南!
transformToFragment(sourceDoc, ownerDoc)
作品!
请张贴答案。