使用ColdFusion函数XMLFormat()时,如何转义HTML字符实体?

Eri*_*air 2 html xml coldfusion character-encoding

我有以下HTML块:

<p>The quick brown fox jumps over the lazy dog &mdash; The quick brown fox jumps over the lazy dog.</p>
<p>The quick brown fox jumps over the lazy dog &mdash; The quick brown fox jumps over the lazy dog.
<br>The quick brown fox jumps over the lazy dog &mdash; The quick brown fox jumps over the lazy dog.
Run Code Online (Sandbox Code Playgroud)

它不是有效的XHTML.但是,我需要将此HTML包含在XML文档中.我尝试使用XMLFormat()以转换为<to &lt;>to &gt;,这很有效.不幸的是,它也转换&mdash;&amp;mdash;无效,并在CFXML标记中抛出异常.

<cfxml variable="myXML">
    <content>#XMLFormat(myHTML)#</content>
</cfxml>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Jor*_*ter 8

你有几个选择.很大程度上取决于如何使用这些内容.包含所需的输出文档以及指示此xml的使用位置非常有用.

如果您根本不想弄乱HTML的内容,您可以随时使用CDATA,如下所示:

<cfxml variable="myXML">
    <content><![CDATA[#myHTML#]]></content>
</cfxml>
Run Code Online (Sandbox Code Playgroud)

另外,我知道你说你不想转换剩余的&符号,但我只是不知道这是怎么回事.HTML内容是您要处理的字符串 - 在这种情况下,所有内容都应该被转义以便以后可以转义 - 或者它是您希望成为文档一部分的有效XML.我的意思是,当你<content>稍后处理标签的内容时,如果没有转义&符号,你将遇到问题.