场景

编辑器使用的带格式内容都是xml格式,若需显示的内容包含如下字符时,需要进行封装或转义处理
&<>'"

有风险的使用

var str = "<Fragment>(快&检) <1\"0.00 mg/L11111&2'222<222<23>3333>33\"33>3'</Fragment>";
ThinkEditor.InputData(str)

异常效果

异常原因

"<Fragment>(快&检) <1\"0.00 mg/L11111&2'222<222<23>3333>33\"33>3'</Fragment>"包含特殊的XML字符,导致整个字符串不是有效的xml字符串。

正确使用1-ToPlainTextByCDATA()

-使用<![CDATA[]]>标签包裹纯文本内容

[推荐]使用方法ToPlainTextByCDATA()

转换为如下字符串:
<![CDATA[(快&检) <1"0.00 mg/L11111&2'222<222<23>3333>33"33>3']]>

代码示例

var str = "(快&检) <1\"0.00 mg/L11111&2'222<222<23>3333>33\"33>3'";
//`<![CDATA[(快&检) <1"0.00 mg/L11111&2'222<222<23>3333>33"33>3']]>`
var plainText = ThinkEditor.ToPlainTextByCDATA(str);
//`<Fragment><![CDATA[(快&检) <1"0.00 mg/L11111&2'222<222<23>3333>33"33>3']]></Fragment>`
var fragmentStr="<Fragment>" +plainText+"</Fragment>";

ThinkEditor.InputData(fragmentStr);

正确使用2-ToPlainTextByEscape()

  • &<>'"进行转义

使用方法ToPlainTextByEscape()

转换为如下字符串:
(快&amp;检) &lt;1&quot;0.00 mg/L11111&amp;2&apos;222&lt;222&lt;23&gt;3333&gt;33&quot;33&gt;3&apos;

代码示例

var str = "(快&检) <1\"0.00 mg/L11111&2'222<222<23>3333>33\"33>3'";
//'(快&amp;检) &lt;1&quot;0.00 mg/L11111&amp;2&apos;222&lt;222&lt;23&gt;3333&gt;33&quot;33&gt;3&apos;'
var plainText = ThinkEditor.ToPlainTextByEscape(str);
//'<Fragment>(快&amp;检) &lt;1&quot;0.00 mg/L11111&amp;2&apos;222&lt;222&lt;23&gt;3333&gt;33&quot;33&gt;3&apos;</Fragment>'
var fragmentStr="<Fragment>" +plainText+"</Fragment>";

ThinkEditor.InputData(fragmentStr);

正确的显示效果

两种转换方式比较

  • CDATA方式比Escape方式,更直观、速度更快
  • CDATA方式要求纯文本中不能有]]>连续字符
  • [推荐使用]Escape方式适用所有场景

更复杂场景

实现目标

输入多个换行内容

显示效果

输入参数

输入参数fragmentStr内容如下
<Fragment>(快&amp;检) &lt;1&quot;0.00 mg/L11111&amp;2&apos;222&lt;222&lt;23&gt;3333&gt;33&quot;33&gt;3&apos;<LF/><Element>(放入元素中&amp;) &lt;1&quot;0.00 mg/L有特殊字符&lt;23&gt;3333&gt;33&quot;33&gt;3&apos;</Element></Fragment>

示例代码

var str1 = "(快&检) <1\"0.00 mg/L11111&2'222<222<23>3333>33\"33>3'";
var plainText1 = ThinkEditor.ToPlainTextByEscape(str1);
plainText1 += "<LF/>"

var str2 = "(放入元素中&) <1\"0.00 mg/L有特殊字符<23>3333>33\"33>3'";
var plainText2 = ThinkEditor.ToPlainTextByEscape(str2);
plainText2 = "<Element>" + plainText2 + "</Element>";
var fragmentStr="<Fragment>" +plainText1+plainText2+ "</Fragment>";

ThinkEditor.InputData(fragmentStr);
文档更新时间: 2024-11-20 21:41   作者:admin