2017-10-06 133 views
5

XML'i düzenlemek için jQuery kullanıyorum. Evet, biliyorum bu muhtemelen kötü bir fikir.jQuery replaceWith() kullanırken, neden <constructor> etiketi 'undefined' ile sonuçlanır?

xml etiketi <constructor>'u kullanırken bazı çok garip davranışlar (hata) ile karşılaştım. Varolan XML'in bu etiketle değiştirilmesi, etiketin 'undefined' ile çevrelenmesiyle sonuçlanır.

$(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>

Bu kod denemek başka etiket için çalışıyor

. Şimdiye kadar sadece <constructor>'un bu problemi var gibi görünüyor.

Neler olduğu hakkında bir fikrin var mı? Bunun nedeni jQuery XML değil HTML işlemek içindir? Kullanabileceğim herhangi bir geçici çözüm var mı?

+0

$(document).ready(function(){ var my_xml = $.parseXML("<document><old>original xml</old></document>"); var new_xml= $.parseXML("<document><constructor>Foo</constructor></document>"); var new_xml_const = $(new_xml).find('constructor'); var old_node = $(my_xml).find('old'); old_node.replaceWith(new_xml_const); 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>
evet bir böcek gibi görünüyor. Benim tahminim onlar bir tür var validTags = {"a": true, "span": validTags 'içinde true,…} ve '' constructor 'yapmak doğrudur. Ama evet, genel olarak [uygun XML çözümleyici] kullanmalısınız (https://developer.mozilla.org/en-US/docs/Web/Guide/Parsing_and_serializing_XML) – Bergi

cevap

2

Sorununuz, xml string ile xml object değiştiriliyor. xml object'u xml object ile değiştirmelisiniz.