2

この回答はこのトピックに簡単に触れましたが、私が抱えている問題については触れていませんでした。

このフィドルを見てください。

アラートメッセージからわかるように、jQueryは私が予期していなかった多くの変更を加えました。

  • <node></node>オリジナルを自動閉鎖タグに折りたたんだ( <node />
  • $('<SelfClosingNode />')になりました<selfclosingnode xmlns="http://www.w3.org/1999/xhtml"></selfclosingnode>、例えば。タグ名を小文字にし、xmlns属性を追加して、開始タグと終了タグに分割しました

EXACT xmlを挿入できるようにする必要があります。つまり、jQueryがマークアップ構造を台無しにしたくないのです。

助けてくれてありがとう...

4

1 に答える 1

1

良いニュースは、大文字と小文字を区別するように強制できることです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自己閉鎖タグを空のタグに置き換えます。

于 2012-11-21T01:09:20.550 に答える