在JavaScript (服务器端nodejs)中,我编写了一个生成xml作为输出的程序。
我通过连接一个字符串来构建xml:
str += '<' + key + '>';
str += value;
str += '</' + key + '>';
问题是:如果value
包含像'&'
、'>'
或'<'
这样的字符怎么办?转义这些字符的最好方法是什么?
或者有没有可以转义XML实体的javascript库?
发布于 2015-01-16 16:32:39
在相同的结果下,这可能会更有效率:
function escapeXml(unsafe) {
return unsafe.replace(/[<>&'"]/g, function (c) {
switch (c) {
case '<': return '<';
case '>': return '>';
case '&': return '&';
case '\'': return ''';
case '"': return '"';
}
});
}
发布于 2012-02-23 08:04:55
如果你有jQuery,这里有一个简单的解决方案:
String.prototype.htmlEscape = function() {
return $('<div/>').text(this.toString()).html();
};
像这样使用它:
"<foo&bar>".htmlEscape();
-> "<foo&bar>"
发布于 2020-01-29 22:46:39
注意,如果XML中有XML,那么所有的正则表达式都不是很好。
而是在字符串上循环一次,并替换所有转义字符。
这样的话,你就不能在同一个角色身上跑两次。
function _xmlAttributeEscape(inputString)
{
var output = [];
for (var i = 0; i < inputString.length; ++i)
{
switch (inputString[i])
{
case '&':
output.push("&");
break;
case '"':
output.push(""");
break;
case "<":
output.push("<");
break;
case ">":
output.push(">");
break;
default:
output.push(inputString[i]);
}
}
return output.join("");
}
https://stackoverflow.com/questions/7918868
复制相似问题