4

是否可以通过任何配置选项告诉JavaScript的XMLSerializer不要将空标签折叠为自闭标签?我将一个xml字符串提供给xml解析器,然后在对树进行修改后对其进行重新串行化,但是在输入中有一个明确的结束标记的情况下,这会在输出中折叠为自动关闭标记,从而导致问题。强制XMLSerializer不要折叠空标记?

+0

对这个问题有这么多的希望。同样的问题在这里,折叠textarea(Ajax4JSF)在outerHTML =“xxxx”中使用完全搞砸了一切。 –

+0

使用IE11中的XMLSerializer将XHR response.responseXML对象转换为字符串时出现类似问题。返回在IE中不呈现的自封闭脚本标记。计划使用正则表达式来解决它,任何人都有其他解决方案 – gusaindpk

回答

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); 
} 
0

如果没有可用的jQuery,只想要通过xmlserialzer的路要走,还可以使用NPM包“XMLDOM”

var serializer = require('xmldom').XMLSerializer; 
var str = serializer.serializeToString('your node'); 

它负责自我关闭标签(如脚本标签)。 NPM xmldom 在IE11中正常工作。

+0

你可以参考下面的git hub链接,它使用xmldom for IE。 https://github.com/futurepress/epub.js/blob/v0.3/src/section.js#L96 – gusaindpk