在我的XML文件中,我試圖使用文件的路徑;它開始像這樣:用XML表示C: Program Files
<value key="myPath"><![CDATA[C:\Program Files\myFile.exe]]>
然後,當我啓動我的應用程序它總是說,無法找到文件:
找不到文件C:\ PROGRAM
所以,顯然它仍然陷入了Program和Files之間的空間。我認爲我的CDATA會解決這個問題。
我怎麼了?
在我的XML文件中,我試圖使用文件的路徑;它開始像這樣:用XML表示C: Program Files
<value key="myPath"><![CDATA[C:\Program Files\myFile.exe]]>
然後,當我啓動我的應用程序它總是說,無法找到文件:
找不到文件C:\ PROGRAM
所以,顯然它仍然陷入了Program和Files之間的空間。我認爲我的CDATA會解決這個問題。
我怎麼了?
如果我在設計這個應用程序,我會存儲URI而不是文件名。這似乎是在通常使用XML的世界中的正確方法。但是,當然,您可以使用XML來存儲您喜歡的任何內容,並且如果要求存儲Windows文件名,則歡迎您這樣做。
它不起作用的事實與XML無關。從XML中提取文件名並嘗試打開該文件的接收應用程序出錯了:它會弄亂文件名本身,或者將它傳遞給API,而不能處理包含空格的文件名。
嘗試在路徑周圍放置雙引號。
<value key="myPath"><![CDATA["C:\Program Files\myFile.exe"]]>
您可能不需要使用CDATA,以防萬一您想要清理它。
這可能不是XML,它可能是您的應用程序在空格後終止。
幾個可能性
沒有關於如何執行XML的更多信息很難說。
默認情況下,XML不會混淆你的空格。它也不關心在文件擴展名之前的後退,冒號或點。真正的大部分有效路徑字符都是有效的XML字符。 (我認爲它們實際上都是有效的XML文本節點內容。)
問題肯定是在XML處理中,而不是XML內容。
您可以使用"e;Path%quote;
技術。很髒,但工作正常,
它不是xml,cdata或不,它是你的程序錯誤處理的空間。 cdata只是一種不需要轉義的便捷方式<>& –
CDATA(或XML)與您的問題無關。這是你的程序不能正確處理實際值。 –
你們是對的,這是解析器搞砸了。感謝您的所有意見。 – fumeng