繁体   English   中英

是否有 js 函数用它们的转义序列替换 xml 特殊字符?

[英]Is there js function that replace xml Special Character with their escape sequence?

我在网上搜索了很多,但没有找到用转义序列替换 xml 特殊字符的 js 函数?
有这样的吗?

我知道以下几点:

Special Character   Escape Sequence Purpose  
&                   &           Ampersand sign 
'                   '          Single quote 
"                   "          Double quote
>                   >            Greater than 
<                   &lt;            Less than

还有更多吗? 像 0×00 这样的十六进制值怎么写,
这也有问题吗?

我用过这个:

function htmlSpecialChars(unsafe) {
    return unsafe
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&apos;");
}

这里有一个有趣的 JS 库: Client side HTML encoding anddecode

您可以使用PHPJS 项目中的PHP htmlspecialchars

这类似于我可以在 javascript 中转义 html 特殊字符吗?

那里接受的答案是这样的:

function escapeHtml(unsafe) {
    return unsafe
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
 }

但是,如果您使用的是 lodash,那么我喜欢该帖子中 cs01 的回答:

_.escape('fred, barney, & pebbles');
// => 'fred, barney, &amp; pebbles'

这是旧的,但我最喜欢的方法是让浏览器弄清楚:

function encodeXML(data){
    var d = document.createElement('div');
    d.appendChild(document.createTextNode(data));
    return d.innerHTML;
}

encodeXML('&');

输出:

“&amp;”

你也可以使用d.innerText = data; d.textContent = data; ,但createTextNode()拥有最多的浏览器支持。

这些是您唯一需要担心的字符。

通常,您应该使用 DOM 接口来构建 XML 文档,然后您无需担心手动转义。 如果您将字符串混搭在一起以构建 XML,那只会成为一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM