好消息是您可以强制区分大小写SelfClosingNode
。见下文:
var xml_string = $("#xml-data").html();
try{
var xml = $.parseXML(xml_string);
var $xml = $(xml);
var newStuff = $.parseXML("<SelfClosingNode />");
var $newStuff = $(newStuff.documentElement);
$xml.find("project").append($newStuff);
console.log(xml.documentElement);
// Needed if you are running in IE
if (window.ActiveXObject) {
var new_xml_string = xml.xml;
} else {
var new_xml_string = (new XMLSerializer()).serializeToString(xml);
}
alert( new_xml_string );
} catch(e){
alert(e);
}
不幸的是,强制使用自闭合标签的是 XMLSerializer,而不是 JQuery。自闭标签被认为对 XML 有效,但对 XHTML 无效。如果您查看控制台日志输出(参见console.log
上面的语句),您可以看到标签实际上并没有在 DOM 中自我关闭。
一种快速而肮脏的方法是更改<node></node>
为<node><!-- comment --></node>
.
否则,您的外部程序可能必须更灵活地读取这些自闭合标签,因为它们是有效的 XML。在现有 XML 中替换自闭合标签存在一些问题,例如Replace XML self-closing tag with empty one