2015-01-09 2 views
0

Я беру строку xml из скрытого поля, и мне нужно добавить узел в этот xml. Итак, чтобы добавить новый узел, мне сначала нужно преобразовать xml-строку в объект xml, но я использую jQuery версии 1.3. Я не могу использовать метод parseXML().Как преобразовать строку в xml в jQuery версии 1.3 и ниже? Как добавить узел в xml?

ответ

0

Должен быть в состоянии использовать parseXml, скопировав его из версии, которая включает его в ядро. Вслед за скопирована с версии 1.11.2

// Cross-browser xml parsing 
jQuery.parseXML = function(data) { 
    var xml, tmp; 
    if (!data || typeof data !== "string") { 
     return null; 
    } 
    try { 
     if (window.DOMParser) { // Standard 
      tmp = new DOMParser(); 
      xml = tmp.parseFromString(data, "text/xml"); 
     } else { // IE 
      xml = new ActiveXObject("Microsoft.XMLDOM"); 
      xml.async = "false"; 
      xml.loadXML(data); 
     } 
    } catch(e) { 
     xml = undefined; 
    } 
    if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) { 
     jQuery.error("Invalid XML: " + data); 
    } 
    return xml; 
}; 


// use it here 
0

Попробуйте разобрать данные XML, как,

var txt=document.getElementById('hiddenId').value; 
if (window.DOMParser){ 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); 
} else // Internet Explorer 
{ 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async=false; 
    xmlDoc.loadXML(txt); 
} 

Кроме того, если вы видите последние версии для $.parseXML() то код для него выглядит,

// you can extend jquery and use the below function, also 
// copied from jquery 1.7.0 minified version 
parseXML: function (c) { 
     var d, 
     f; 
     try { 
      a.DOMParser ? (f = new DOMParser, d = f.parseFromString(c, 'text/xml')) : (d = new ActiveXObject('Microsoft.XMLDOM'), d.async = 'false', d.loadXML(c)) 
     } catch (g) { 
      d = b 
     }(!d || !d.documentElement || d.getElementsByTagName('parsererror').length) && e.error('Invalid XML: ' + c); 
      return d 
}, 
0

Если ваша текущая версия jQuery не поддерживает $.parseXML(), вы можете удалить the $.parseXML() implementation в свой код (ниже несколько ол d вариант осуществления с, прежде чем они ограничили его поддержку IE до IE9 +):

jQuery.parseXML = jQuery.parseXML || function(data) { 
    var xml, tmp; 
    if (!data || typeof data !== "string") { 
     return null; 
    } 
    try { 
     if (window.DOMParser) { // Standard 
      tmp = new DOMParser(); 
      xml = tmp.parseFromString(data , "text/xml"); 
     } else { // IE 
      xml = new ActiveXObject("Microsoft.XMLDOM"); 
      xml.async = "false"; 
      xml.loadXML(data); 
     } 
    } catch(e) { 
     xml = undefined; 
    } 
    if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) { 
     jQuery.error("Invalid XML: " + data); 
    } 
    return xml; 
}; 

затем использовать его как нормальный:

var x = $($.parseXML("<a><b></b></a>")); 
x.find("b").text("hello!"); 
Смежные вопросы