javascript - 如何在 JavaScript 中为 XML 创建有效的字符串?

标签 javascript string xml-entities

我正在寻找一个函数,可以根据需要将字符串转换为带有 xml 实体的 xml 字符串。类似于 htmlentities在 PHP 中,但在 XML 和 Javascript 中。

感谢您的帮助!

最佳答案

没有任何内置的东西(除了innerHTML序列化,这对于这个目的来说是 super 狡猾的),你必须自己编写它,例如:

function encodeXml(s) {
    return (s
        .replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
        .replace(/\t/g, '&#x9;').replace(/\n/g, '&#xA;').replace(/\r/g, '&#xD;')
    );
}

这是一个为了安全起见的最大化转义函数:

  • 它总是编码 " , '和制表符/CR/LF 字符,尽管它们只需要在属性值中转义,其中特定的引号字符用作分隔符。

  • 它总是编码 >尽管这实际上只需要在 ]]> 的一部分时进行转义文本内容的顺序。

如果您不需要这些属性,您可以删除 replace​您不需要(例如,很少需要将 tab/CR/LF 放入属性值中)。

如果您需要生成与 HTML 兼容的 XHTML,请使用 &#39;而不是&apos;如果你需要逃避。

一般来说,您应该避免 htmlentities并使用htmlspecialchars相反,如 htmlentities不必要地将所有非 ASCII 字符编码为 HTML 实体引用,如果您不给它正确的值,这还会产生搞乱文本的副作用 $charset参数。

关于javascript - 如何在 JavaScript 中为 XML 创建有效的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959642/

相关文章:

PHP SimpleXMLElement 不对实体进行引号

javascript - if 语句中的函数仅在第一次时未定义,但在休息时间函数调用也未定义

python - Python中的字符串连接与字符串替换

Javascript:如何打印包括回车在内的字符串的原始内容?

iphone - CFAttributedString 替换出现的字符串?

php - 使用 text() 匹配 XSLT 中的自定义实体名称

javascript - 如何获取字符范围

javascript - 如何在浏览器中渲染时格式化 TeX 表达式?

javascript - console.log() 本地上传的csv文件

javascript - Extjs Ajax请求中未获取文件数据