5
私はXMLを編集するためにjQueryを使用しています。はい、それはおそらく悪い考えです。jQuery replaceWith()を使用すると、タグ<constructor>が「未定義」になるのはなぜですか?
xmlタグ<constructor>
を使用すると、非常に奇妙な動作(バグ?)が発生しました。既存のXMLをこのタグに置き換えると、タグは「未定義」で囲まれます。
$(document).ready(function(){
var my_xml = $.parseXML("<document><old>original xml</old></document>");
var new_xml_string = '<constructor>Foobar</constructor>';
var old_node = $(my_xml).find('old');
old_node.replaceWith(new_xml_string);
var my_xml_string = (new XMLSerializer()).serializeToString(my_xml);
console.log(my_xml_string);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
このコードは、私がしようと他のタグのため正常に動作します。今のところ<constructor>
だけがこの問題を抱えているようです。
何が起こっているのでしょうか?これはjQueryがXMLではなくHTMLを処理するためのものなのですか?私が使用できる回避策はありますか?
はい、バグのようですね。私の推測では、 'var validTags = {" a ":true、" span ":true、...}'と '" constructor in in validTags'が真であると思います。しかし、ええ、あなたは一般的に[適切なXMLパーサ](https://developer.mozilla.org/en-US/docs/Web/Guide/Parsing_and_serializing_XML) – Bergi