我正在寻找一个函数,可以在需要的地方将字符串转换为带有 xml 实体的 xml 字符串。类似于PHP 中的htmlentities,但用于 XML 和 Javascript。
感谢您的任何帮助!
我正在寻找一个函数,可以在需要的地方将字符串转换为带有 xml 实体的 xml 字符串。类似于PHP 中的htmlentities,但用于 XML 和 Javascript。
感谢您的任何帮助!
没有内置任何东西(除了innerHTML
序列化,这对于这个目的来说是超级狡猾的),你必须自己写,例如:
function encodeXml(s) {
return (s
.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''')
.replace(/</g, '<').replace(/>/g, '>')
.replace(/\t/g, '	').replace(/\n/g, '
').replace(/\r/g, '
')
);
}
这是一个为了安全起见的最大化逃逸函数:
它将始终对 和 tab/CR/LF 字符进行编码"
,'
尽管它们只需要在属性值中进行转义,其中特定的引号字符被用作分隔符。
它将始终进行编码>
,尽管实际上仅]]>
在文本内容中的序列的一部分时才需要对其进行转义。
如果您不需要这些属性,则可以删除replace
不需要的 s(例如,很少需要将 tab/CR/LF 放在属性值中)。
如果您需要生成与 HTML 兼容的 XHTML,请使用'
而不是'
如果您需要转义。
一般来说,您应该避免htmlentities
并htmlspecialchars
改为使用,因为不必要地将所有非 ASCII 字符编码为 HTML 实体引用,如果您不给它正确的参数htmlentities
,这也会产生搞砸文本的副作用。$charset