如何更换& lt;和& gt;从客户端的xml响应中 [英] How to replace < and > from the xml response in client side

查看:65
本文介绍了如何更换& lt;和& gt;从客户端的xml响应中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个来自服务器端的xml格式的响应(部分如下所示)

I have a response that comes from server side in xml format (partial like below)

<list>
    <Response>
        <cfgId>903</cfgId>
        <recommendations>
            &lt;Rule&gt;
            &lt;name&gt;Env SSA_RB_RESTART&lt;/name&gt;
            &lt;category&gt;none&lt;/category&gt;
            &lt;severity&gt;warning&lt;/severity&gt;
            &lt;ruleEvalResult&gt;true&lt;/ruleEvalResult&gt;
            &lt;actionResult&gt;Setting SSA_RB_RESTART=0 will cause RuleBase corruption.Kindly unset this environment variable and
            restart the IIR server&lt;/actionResult&gt;
            &lt;/Rule&gt;
        </recommendations>
    </Response>
    <Response>
        <cfgId>903</cfgId>
        <recommendations>
            &lt;Rule&gt;
            &lt;name&gt;SSAOPTS (+Ltd) setting&lt;/name&gt;
            &lt;category&gt;none&lt;/category&gt;
            &lt;severity&gt;warning&lt;/severity&gt;
            &lt;ruleEvalResult&gt;true&lt;/ruleEvalResult&gt;
            &lt;actionResult&gt;
            Please note that it is not recommended to have SSAOPTS=+Ltd in case of the 
            Production environment.&lt;/actionResult&gt;
            &lt;/Rule&gt;
        </recommendations>
    </Response>
</list>

更新

我用xml=$(xmldata); var resp_x = $(xml).find('Response').text();获得主要的Response标记,然后我尝试用下面的标记替换

I get the main Response tag with xml=$(xmldata); var resp_x = $(xml).find('Response').text(); and then I am trying to replace with below

resp_x = resp_x.replace(/&lt;/g,"<");
resp_x = resp_x.replace(/&gt;/g,">");
var rule_x = $(resp_x).find('name').text();
alert(rule_x);

但是它给我空白,请帮助我获取severity.

but it gives me blank, please help me fetch severity.

用我的答案更新

var xmlString=xmlToString(xmldata);
                xmlString=xmlString.replace(/(&lt;)/g,"<").replace(/(&gt;)/g,">");

                xml=StringtoXML(xmlString);

 //now I can do my operations here
 $(xml).find('Response').each(function(){
   console.debug($(this).find('severity').text());
 });


function xmlToString(xmlObj) {
if (navigator.appName == "Netscape")
{
   return (new XMLSerializer()).serializeToString(xmlObj);
}
if (navigator.appName == "Microsoft Internet Explorer")
{
    return xmlObj.xml;
}
}

function StringtoXML(text){
if (window.ActiveXObject){
  var doc=new ActiveXObject('Microsoft.XMLDOM');
  doc.async='false';
  doc.loadXML(text);
} else {
  var parser=new DOMParser();
  var doc=parser.parseFromString(text,'text/xml');
}
return doc;
}

推荐答案

您太早将返回的XML转换为jQuery对象,然后执行了替换错误.尝试这样的事情:

You're converting the returned XML to a jQuery object too early and then doing the replace wrong. Try something like this:

$.ajax({
    url: 'list.xml',
    dataType: 'text',
    success: function(data) {
        console.debug(data);

        data = data.replace('&lt;', '<', 'gm')
                   .replace('&gt;', '>', 'gm');

        console.debug(data);

        var $severities = $(data).find('severity');

        console.debug($severities);
    }
});

replace()中,您同时需要g(全局)和m(多行)标志.有关详细信息,请参见 String.replace()上的文档.

In the replace(), you need both the g (global) and m (multi-line) flags. See the documentation on String.replace() for details.

这篇关于如何更换&amp; lt;和&amp; gt;从客户端的xml响应中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆