是否可以通过任何配置选项告诉JavaScript XMLSerializer
不要将空标签折叠为自动关闭标签?我正在向xml解析器提供一个xml字符串,然后在对树进行修改后将其重新序列化,但是如果我在输入中有一个明确的结束标记,则会将其折叠为输出中的自闭标记,这会导致问题。
答案 0 :(得分:0)
我找不到任何东西,但是因为我使用的是JQuery,我使用了这个:
$('<div>').append( $(mynode).clone() ).html();
而不是
new XMLSerializer().serializeToString(mynode);
JQuery版本没有使用自动关闭标签。
注意:我的问题只出现在IE11上,所以我使用了:
if (Object.hasOwnProperty.call(window, "ActiveXObject") && !window.ActiveXObject && window.jQuery) {
// is IE11 && Jquery
$('<div>').append( $(newnode).clone() ).html();
} else {
oldnode.outerHTML = new XMLSerializer().serializeToString(newnode);
}
答案 1 :(得分:0)
如果您没有可用的jquery并且只想通过xmlserialzer方式,那么您也可以使用 npm package&#39; xmldom&#39; 。
var serializer = require('xmldom').XMLSerializer;
var str = serializer.serializeToString('your node');
它负责自闭标签(例如脚本标签)。 NPM xmldom 在IE11中正常工作。
答案 2 :(得分:0)
我面临类似的问题。要仅在根元素(没有 xmldom 或 jquery )中解决它,只需检查xmlstring是否以自闭标签结尾并替换:
//let roottagname = 'script'
...
const serializer = new XMLSerializer();
let xmlStr = serializer.serializeToString(d);
if (xmlStr.endsWith('/>')) xmlStr = xmlStr.slice(0, -2) + '></' + roottagname + '>';