是否有js函数将xml特殊字符替换为转义序列

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

本文关键字:特殊字符 替换 转义序列 xml js 函数 是否      更新时间:2023-09-26

我在网上搜索了很多,没有找到用转义序列替换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库:客户端HTML编码和解码

您可以使用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'

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

通常,您应该使用DOM接口来构建XML文档,这样就不必担心手动转义。只有当您将字符串混合在一起以构建XML时,这才会成为一个问题。

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

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()具有最多的浏览器支持。