如何替换<和和gt;来自客户端的XML响应
How to replace < and > from the xml response in client side
我有一个来自服务器端的xml格式的响应(部分如下)
<list>
<Response>
<cfgId>903</cfgId>
<recommendations>
<Rule>
<name>Env SSA_RB_RESTART</name>
<category>none</category>
<severity>warning</severity>
<ruleEvalResult>true</ruleEvalResult>
<actionResult>Setting SSA_RB_RESTART=0 will cause RuleBase corruption.Kindly unset this environment variable and
restart the IIR server</actionResult>
</Rule>
</recommendations>
</Response>
<Response>
<cfgId>903</cfgId>
<recommendations>
<Rule>
<name>SSAOPTS (+Ltd) setting</name>
<category>none</category>
<severity>warning</severity>
<ruleEvalResult>true</ruleEvalResult>
<actionResult>
Please note that it is not recommended to have SSAOPTS=+Ltd in case of the
Production environment.</actionResult>
</Rule>
</recommendations>
</Response>
</list>
我用xml=$(xmldata); var resp_x = $(xml).find('Response').text();
得到主要的Response
标签,然后我试图用下面的
resp_x = resp_x.replace(/</g,"<");
resp_x = resp_x.replace(/>/g,">");
var rule_x = $(resp_x).find('name').text();
alert(rule_x);
但是显示空白,请帮我取severity
更新我的答案
var xmlString=xmlToString(xmldata);
xmlString=xmlString.replace(/(<)/g,"<").replace(/(>)/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对象,然后执行错误的替换。试试这样做:
$.ajax({
url: 'list.xml',
dataType: 'text',
success: function(data) {
console.debug(data);
data = data.replace('<', '<', 'gm')
.replace('>', '>', 'gm');
console.debug(data);
var $severities = $(data).find('severity');
console.debug($severities);
}
});
在replace()
中,您需要g
(全局)和m
(多行)标志。详细信息请参见String.replace()的文档
试一下
resp_x = resp_x.replace(/(<)/g,"<");
resp_x = resp_x.replace(/(>)/g,">");
var rule_x=$(resp_x).find('name').text();
alert(rule_x);
希望能有所帮助
下一个例子可以帮助你:
var str="<Rule><name>Env SSA_RB_RESTART</name><category>none</category><severity>warning</severity><ruleEvalResult>true</ruleEvalResult><actionResult>Setting SSA_RB_RESTART=0 will cause RuleBase corruption.Kindly unset this environment variable and restart the IIR server</actionResult>"
str=str.replace(/<|>/g,function(s){return s==="<"?"<":">"});
// str now is: "<Rule><name>Env SSA_RB_RESTART</name><category>none</category><severity>warning</severity><ruleEvalResult>true</ruleEvalResult><actionResult>Setting SSA_RB_RESTART=0 will cause RuleBase corruption.Kindly unset this environment variable and restart the IIR server</actionResult>"
更新:下一段代码不需要替换<
和>
来获取severity
:
var response="<list><Response><cfgId>903</cfgId><recommendations><Rule><name>Env SSA_RB_RESTART</name><category>none</category><severity>warning</severity><ruleEvalResult>true</ruleEvalResult><actionResult>Setting SSA_RB_RESTART=0 will cause RuleBase corruption.Kindly unset this environment variable and restart the IIR server</actionResult> </Rule></recommendations></Response><Response><cfgId>903</cfgId><recommendations><Rule><name>SSAOPTS (+Ltd) setting</name><category>none</category><severity>warning</severity><ruleEvalResult>true</ruleEvalResult><actionResult> Please note that it is not recommended to have SSAOPTS=+Ltd in case of the Production environment.</actionResult></Rule></recommendations></Response></list>";
var recs=$(response).find("recommendations");
for(var i=0;i<recs.length;i++) {
var xml=$("<recommendations>"+$(recs[i]).text()+"</recommendations>");
alert(xml.find("severity").text());
}
http://jsfiddle.net/ZpYac/相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何将我的javascript库公开给其他客户端使用
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- MobileFirst:在客户端运行计时器作业-最佳选项
- 标签客户端的设置值
- 客户端内服务器端经典ASP代码的问题<脚本>标签
- 存储数据/<选择>在客户端
- 如何在没有<隐藏>因为这可以从客户端控制台进行更改
- 客户端内部排序<李>标记值
- Lightswitch 2013-HTML客户端->commitChanges()和showOtherPage()
- 如何替换<和和gt;来自客户端的XML响应
- 当对List< t& gt;使用EditorFor时,客户端验证没有显示消息