2012-11-20 3 views
2

This answer이 주제에 대해 간략히 언급했지만 문제는 언급하지 않았습니다.jQuery가 동적으로 삽입 된 XML 문자열을 조작하지 못하도록

this fiddle을 살펴보십시오. ,

  • $('<SelfClosingNode />')<selfclosingnode xmlns="http://www.w3.org/1999/xhtml"></selfclosingnode>되었다 자체 닫는 태그 (<node />)에 원래 <node></node> 붕괴 : 당신이 경고 메시지에서 볼 수 있듯이

    는, jQuery를 내가 기대하지 않은 많은 변화를 만들어 예. 태그 이름을 소문자로 만들고, xmlns 속성을 추가하고, 여는 태그와 닫는 태그로 분리하십시오.

EXACT xml, i.o.w를 삽입 할 수 있어야합니다. jQuery가 마크 업 구조를 엉망으로 만들고 싶지 않습니다.

+0

결과로 얻는 XML을 어떻게 활용할 계획입니까? – Ibu

+0

xml의 구조에 대해 매우 특이한 외부 프로그램으로 내보내는 방법 – AndyPerlitch

답변

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에서 자체 폐쇄되지 않았 음을 알 수 있습니다.

신속하고 더러운 방법 중 하나는 <node></node><node><!-- comment --></node>으로 변경하는 것입니다.

그렇지 않으면 유효한 XML이므로 외부 프로그램이 이러한 자동 마감 태그를 읽는 데있어보다 유연하게 만들어야 할 수 있습니다. 기존 XML에서 자체 마감 태그 대체에 대한 몇 가지 질문이 있습니다 (예 : Replace XML self-closing tag with empty one

+0

감사합니다. 덕분에 많은 도움이되었습니다. – AndyPerlitch

관련 문제