簡體   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