是否可以通过任何配置选项告诉 JavaScriptXMLSerializer
不要将空标签折叠成自动关闭标签?我将一个 xml 字符串输入到 xml 解析器中,然后在对树进行修改后重新序列化它,但是我在输入中有一个明确的结束标记,这在输出中被折叠为一个自闭标记,这会导致问题。
问问题
1095 次
3 回答
1
如果您没有可用的 jquery 并且只想通过 xmlserialzer 方式,您也可以使用npm package 'xmldom'。
var serializer = require('xmldom').XMLSerializer;
var str = serializer.serializeToString('your node');
它负责自我关闭标签(例如脚本标签)。 NPM xmldom 在 IE11 中运行良好。
于 2017-02-26T05:38:43.633 回答
0
Well couldn't find anything but since I was using JQuery I used this :
$('<div>').append( $(mynode).clone() ).html();
instead of
new XMLSerializer().serializeToString(mynode);
JQuery version didn't go with self-closing tags.
Note : My problem was only with IE11 so I used :
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);
}
于 2014-11-26T15:35:53.557 回答
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 + '>';
于 2020-09-28T13:22:45.150 回答