2013-11-21 46 views
0

我有這樣的XML文件,我想在PHP與簡單的XML解析:如何使用SimpleXML在元素值中保存< and >?

<?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 

然後我嘗試用urlencode:

<?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文件的正確方法是什麼?

+0

您編碼的XML與>和<是啥工作。聽起來像這裏是一個實體解碼過程中的某個地方。 – ThW

回答

0

總結自己的價值觀CDATA

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

好的,這是有效的,現在我只需要弄清楚如何自動將CDATA添加到該元素。謝謝! – Furunomoe

+0

生成xml文件的應用程序應該放在它被添加的位置。 – jeff

+0

在這種情況下,Cdata將只是一種解決方法,而不是解決方法。 「<![CDATA []]>」,「<![CDATA [鴨子/ >]]>」和「<鴨子/ >」都返回相同的文本值。 – ThW

相關問題