如何保存<;并且>;在元素值中使用SimpleXML


How to preserve < and > in element value with SimpleXML?

我有一个XML文件,我想用PHP中的简单XML来解析:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <title>Lorem ipsum</title>
    <content>Whoa, <ducks>!</content>
</data>

我想在内容元素中保留,所以我尝试对其进行HTML编码:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <title>Lorem ipsum</title>
    <content>Whoa, &lt;ducks&gt;!</content>
</data>

但是SimpleXML给了我一个错误:

Warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag content

然后我尝试了URLncode:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <title>Lorem ipsum</title>
    <content>Whoa%2C%20%3Cducks%3E!</content>
</data>

它给了我这个:

Warning: simplexml_load_string(): Entity: line 3: parser error : Opening and ending tag mismatch: ducks

这是我当前的PHP代码,非常简单,对吧?

$request = simplexml_load_string($_POST["data"]);

那么,在保留特殊字符的同时解析XML文件的正确方法是什么呢?

用CDATA 包装您的价值

<title><![CDATA[Lorem ipsum]]></title>