难以通过XML输出"HTML字符串代码"

ein*_*ein 1 php xml ajax

我通过XML输出"HTML字符串代码"时遇到了麻烦.我在下面给出了一个例子.在服务器端,我有一些用PHP编写的代码.

$htmlCode = "<div>...........................</div>";

header("Content-type: text/xml");

echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
echo "<info>";
echo "<htmlCode>";
echo $htmlCode;
echo "</htmlCode>";
echo "</info>";
Run Code Online (Sandbox Code Playgroud)

问题在于"HTML字符串代码"或上面的$ htmlCode具有标记元素,因此"HTML字符串代码"将被视为XML代码.我希望将输出视为字符串.

在客户端,我有一个"AJAX调用"来检索HTML代码的字符串.

document.getElementById('someID').innerHTML=xmlhttp.responseXML.getElementsByTagName("htmlCode")[0].childNodes[0].nodeValue;//I got nothing because the string is treated as XML code.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我希望我有足够的具体能让你理解我的问题.

Pek*_*ica 5

你在找CDATA.

术语CDATA用于不应由XML解析器解析的文本数据.

解析器会忽略CDATA部分内的所有内容.

CDATA部分以以下内容开头<![CDATA[并以]]>:

// escape closing tags
$htmlCode = str_replace("]]>", "<![CDATA[]]]]><![CDATA[>]]>", $htmlCode);

echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
echo "<info>";
echo "<htmlCode>";
echo "<![CDATA[".$htmlCode."]]>";
echo "</htmlCode>";
echo "</info>";
Run Code Online (Sandbox Code Playgroud)

这里添加了转义修复

  • 这不是水密的.如果HTML数据包含序列`]]>`(它在HTML中非常有效),它将过早地结束CDATA部分. (2认同)