jQuery将XML标记转换为大写

前端之家收集整理的这篇文章主要介绍了jQuery将XML标记转换为大写前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 AJAX请求,它返回一个 XML字符串,我想将其注入DOM.我的功能看起来像
$.ajax({
    type: 'POST',url: "myrequest",data: postdata,datatype: 'json',success: function (arguments) {
        newxmlstring = arguments.newxml;
        oldnode = $("someselector specified in the arguments passed");
        oldnode.replaceWith(newxmlstring);
    }
  });

这有效,但似乎replaceWith函数将所有nodeName映射到服务器发送的响应的大写版本.我假设这是一个尝试使用jQuery来处理XML的怪癖?

因此,例如,如果响应字符串是< data> asdf< / data>当我访问$(newnode)[0] .nodeName时,我得到’DATA’.

有人知道如何处理新的XML,同时保留nodeName的小写?

编辑:我的响应是JSON,因为它包含新的xml字符串和一些关于新xml节点附加位置的其他数据.所以我更愿意保留数据类型:’json’,如果可能的话.

解决方法

From this answer

In XML (and XML-based languages such
as XHTML),tagName preserves case. In
HTML,tagName returns the element name
in the canonical uppercase form. The
value of tagName is the same as that
of nodeName.

一些搜索表明很多人都遇到过这个问题,尤其是选择器和XML(jQuery的find()区分大小写,而find()中使用的选择器是小写的).

Here’s a function其他人正在使用将字符串转换为可能适合您的XML:

$.text2xml = function(sXML) { 
    // NOTE: I'd like to use jQuery for this,but jQuery makes all 
    // tags uppercase 
    //return $(xml)[0]; 
    var out; 
    try{ 
        var dXML = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser(); 
        dXML.async = false; 
    }catch(e){ throw new Error("XML Parser could not be instantiated"); }; 
    try{ 
        if($.browser.msie) out = (dXML.loadXML(sXML))?dXML:false; 
        else out = dXML.parseFromString(sXML,"text/xml"); 
    } 
    catch(e){ throw new Error("Error parsing XML string"); }; 
    return out;
}

猜你在找的jQuery相关文章