我有這個例子中的XML語法錯誤:如何在XML中包含未解析的外部實體值?
其中data.txt中包含:
1 <15024
2 >15023
但我當然有語法錯誤,因爲有在文本文件中WML特殊字符( <>)。那麼如何將這些數據作爲未分析的數據包含在內?
我希望能有這樣的結果:
<?xml version="1.0"?>
<extract>
<data><![CDATA[1 <15024
2 >15023]]></data>
</extract>
我有這個例子中的XML語法錯誤:如何在XML中包含未解析的外部實體值?
其中data.txt中包含:
1 <15024
2 >15023
但我當然有語法錯誤,因爲有在文本文件中WML特殊字符( <>)。那麼如何將這些數據作爲未分析的數據包含在內?
我希望能有這樣的結果:
<?xml version="1.0"?>
<extract>
<data><![CDATA[1 <15024
2 >15023]]></data>
</extract>
首先,僅供參考,你指的是一個外部解析一般實體,而不是一個非解析一個。
雖然您的data.txt文件本身不需要格式良好,但它在包含時必須是良構的。由於CDATA部分不能解析實體(包括外部實體),因此必須在外部實體文件本身內部進行轉義(可能通過服務器端處理文件進行轉義,如果不能,則可以將其引用爲外部實體文件)或不希望手動轉義)。
如果您可以控制文件內容並希望手動處理轉義,也許您可能可以通過文件本身中的CDATA塊簡單地環繞每個文件的文本,因爲在包含文件時該格式應該是正確的。 (我還沒有嘗試或確認,但似乎它應該工作,因爲再次這樣的實體只需要被包括時良好形成。)
或者,您的其他選擇將逃離<
和&
字符(你除了諷刺的是,在CDATA部分中,如果文本可能包含序列]]>
- 如果採取CDATA方法,您可能需要解決這種可能性),通常不需要轉義>
。 (由於外部實體不能在屬性中使用,因此您無需擔心轉義'
或"
,也沒有提到想要這樣做。)