使用 CDATA 时,它不会显示所有内容并添加右方括号
When using CDATA it's not showing all content and adding closing square brackets
从 API 创建了一个 XML 提要后,我知道我必须对几个节点使用 CDATA。
有些工作正常,没有任何问题,但有些似乎缺少内容并显示 ]]> 到最后。
$introduction = substr( $property['description'], 0 , 250 ); // Truncate Description at 250 characters
$description = $property['description'];
$ltd_introduction = $xml->createElement( 'introduction', htmlspecialchars( "<![CDATA[$introduction]]>" ) );
$ltd_description = $xml->createElement( 'description', htmlspecialchars( "<![CDATA[$description]]>" ) );
新创建的 XML 供稿显示:
<introduction>
<![CDATA[Lorem ipsum dolor sit amet]]>
</introduction>
<description>
<![CDATA[Lorem ipsum dolor sit amet]]>
</description>
但是在呈现页面时我混合了以下内容:
Lorem ipsum dolor sit amet
lorem ipsum dolor sit amet]]>
坐下见面]]>
我知道可能会有特殊字符,<br>
在 XML 供稿中显示为 <br >
此外,还会有一些字母包含重音符号.
阅读各种答案后,我认为有必要添加 CDATA 部分和 htmlspecialcharacters,但似乎仍然存在问题。
CDATA 节是一种特殊的字符数据节点,无需解码。它与普通文本节点不同。另外 DOMDocument::createElement()
的第二个参数被破坏了。它只做了一半的必要转义。更好的方法是使用相应的方法创建文本节点或 CDATA 部分并附加它。 DOM 将根据需要进行转义。
以下是两种节点类型的示例:
$document = new DOMDocument();
$content = $document->appendChild($document->createElement('content'));
$content
->appendChild($document->createElement('introduction'))
->appendChild($document->createTextNode('Some content & more'));
$content
->appendChild($document->createElement('introduction'))
->appendChild($document->createCdataSection('Some content & more'));
$document->formatOutput = TRUE;
echo $document->saveXml();
输出:
<?xml version="1.0"?>
<content>
<introduction>Some content & more</introduction>
<introduction><![CDATA[Some content & more]]></introduction>
</content>
从 API 创建了一个 XML 提要后,我知道我必须对几个节点使用 CDATA。 有些工作正常,没有任何问题,但有些似乎缺少内容并显示 ]]> 到最后。
$introduction = substr( $property['description'], 0 , 250 ); // Truncate Description at 250 characters
$description = $property['description'];
$ltd_introduction = $xml->createElement( 'introduction', htmlspecialchars( "<![CDATA[$introduction]]>" ) );
$ltd_description = $xml->createElement( 'description', htmlspecialchars( "<![CDATA[$description]]>" ) );
新创建的 XML 供稿显示:
<introduction>
<![CDATA[Lorem ipsum dolor sit amet]]>
</introduction>
<description>
<![CDATA[Lorem ipsum dolor sit amet]]>
</description>
但是在呈现页面时我混合了以下内容:
Lorem ipsum dolor sit amet
lorem ipsum dolor sit amet]]>
坐下见面]]>
我知道可能会有特殊字符,<br>
在 XML 供稿中显示为 <br >
此外,还会有一些字母包含重音符号.
阅读各种答案后,我认为有必要添加 CDATA 部分和 htmlspecialcharacters,但似乎仍然存在问题。
CDATA 节是一种特殊的字符数据节点,无需解码。它与普通文本节点不同。另外 DOMDocument::createElement()
的第二个参数被破坏了。它只做了一半的必要转义。更好的方法是使用相应的方法创建文本节点或 CDATA 部分并附加它。 DOM 将根据需要进行转义。
以下是两种节点类型的示例:
$document = new DOMDocument();
$content = $document->appendChild($document->createElement('content'));
$content
->appendChild($document->createElement('introduction'))
->appendChild($document->createTextNode('Some content & more'));
$content
->appendChild($document->createElement('introduction'))
->appendChild($document->createCdataSection('Some content & more'));
$document->formatOutput = TRUE;
echo $document->saveXml();
输出:
<?xml version="1.0"?>
<content>
<introduction>Some content & more</introduction>
<introduction><![CDATA[Some content & more]]></introduction>
</content>