添加 xml 文档元素到 html table
Add xml document element to html table
我在浏览器中使用 xml+xsl 并在 javascript 中处理异步页面,但无法添加 xml 已处理的 tr 元素到 table tbody 因为行元素看起来像纯文本。我发现一些 hack 可以通过复制 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 函数 returns XSLTProcessor 具有导入的 xsl 样式表。 xml 变量是 Sarissa 库 dom 文件。
在调试器中 root.children[i] 看起来有效。
如何摆脱这种黑客攻击并将元素正确附加到 table?
更新:
我用的是 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>
I console.log xslt 处理的每个 html 元素从 行项目 到 tr td
已解决:
谢谢 Martin Honnen!
transformToFragment(sourceDoc, ownerDoc)
有效!
请post回答。
我认为,据我了解,在像 Mozilla 浏览器或类似 Chrome 的浏览器中,浏览器本身提供了 XSLTProcessor 的实现,您与 Sarissa 一起使用的对象是本机实现的浏览器。所以我建议,如果 Firefox 是您唯一的目标浏览器,只需按如下方式使用 transformToFragment
:
var resultFragment = pageProcessor().transformToFragment(xml, document);
document.getElementById('table-content').appendChild(resultFragment);
我在浏览器中使用 xml+xsl 并在 javascript 中处理异步页面,但无法添加 xml 已处理的 tr 元素到 table tbody 因为行元素看起来像纯文本。我发现一些 hack 可以通过复制 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 函数 returns XSLTProcessor 具有导入的 xsl 样式表。 xml 变量是 Sarissa 库 dom 文件。 在调试器中 root.children[i] 看起来有效。
如何摆脱这种黑客攻击并将元素正确附加到 table?
更新:
我用的是 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>
I console.log xslt 处理的每个 html 元素从 行项目 到 tr td
已解决:
谢谢 Martin Honnen!
transformToFragment(sourceDoc, ownerDoc)
有效!
请post回答。
我认为,据我了解,在像 Mozilla 浏览器或类似 Chrome 的浏览器中,浏览器本身提供了 XSLTProcessor 的实现,您与 Sarissa 一起使用的对象是本机实现的浏览器。所以我建议,如果 Firefox 是您唯一的目标浏览器,只需按如下方式使用 transformToFragment
:
var resultFragment = pageProcessor().transformToFragment(xml, document);
document.getElementById('table-content').appendChild(resultFragment);