繁体   English   中英

Javascript 中的字符转义

[英]Character escape in Javascript

我在 javascript 中有一个字符串,它对应于一个 xml,当将它分配为属性值时,它会用&quot;转义我的引号。 ,但我还需要它来逃避“<”和“>”标志,这是不做的。

这是 xml 的示例:

<row row="0" XMLContent="<?xml version='1.0' encoding='UTF-8'>"></row>

我决定用替换来做到这一点:

value.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
m_row.attributes.getNamedItemNS(null, name).value = value;

但是通过这样做,您可以像这样分配它:

<row row="0" XMLContent="&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; &amp;gt;"></row>

用于转义“<”和“>”的代码与符号也被转义,使其看起来像这样:

"&lt;" "&lt;" "&gt;"也一样因此,当我获取该属性的值并尝试将其解析为 XML 时,它给了我一个错误,因为它无法解释。

我将不胜感激。

这种情况你可以使用 &lt 和 &gt

<row row="0" XMLContent="&lt?xml version='1.0' encoding='UTF-8'&gt"></row>

如果您使用 DOM 读取/写入 XML,则不需要替换。 串行器将负责 escaping。

您的替换将导致<>的双 escaping 。

 const xmlDocument = (new DOMParser()).parseFromString( '<row row="0" XMLContent=""/>', 'text/xml' ); const row = xmlDocument.documentElement; row.setAttributeNS(null, "XMLContent", "<?xml version='1.0' encoding='UTF-8'?><demo/>"); const xmlString = (new XMLSerializer()).serializeToString(xmlDocument); console.log(xmlString);

暂无
暂无

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

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