良いニュースは、大文字と小文字を区別するように強制できることです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);
}
残念ながら、JQueryではなく、自己終了タグを強制しているのはXMLSerializerです。自己終了タグはXMLには有効と見なされますが、XHTMLには有効ではありません。コンソールログの出力(console.log
上記のステートメントを参照)を見ると、タグが実際にはDOMで自己閉じられていないことがわかります。
すばやく汚い方法の1つは、に変更<node></node>
すること<node><!-- comment --></node>
です。
そうしないと、これらの自己終了タグは有効なXMLであるため、外部プログラムをより柔軟に読み取る必要がある場合があります。既存のXMLの自己閉鎖タグを置き換えることについていくつかの質問があります。たとえば、XML自己閉鎖タグを空のタグに置き換えます。