2011-05-16 132 views
0

我正在使用NSXMLParser分析一個XML文件,該文件效果很好,但有時會給我提供不準確的結果。NSXMLParser丟失字符

例如,我得到這個網址:

http://www.thehungersite.com/clickToGive/home.faces;jsessionid=01F974DC9E276DA587AE299175EDF4F4.ctgProd02?siteId=4&link=ctg_trs_home_from_ths_home_sitenav 

NSXMLParser輸出:

http://www.thehungersite.com/clickToGive/home.faces;jsessionid=01F974DC9E276DA587AE299175EDF4F4.ctgProd02?siteId=4&link=ctg_trs_home_from_ths_home_sitenav

出於某種原因,它忽略了字符串的#38;部分 - 如何我可以拿回來嗎?假設這是HTML編碼,我試過stringByAddingPercentEscapesUsingEncoding:但這不起作用。

任何想法?

回答

0

也許上面這個問題的答案可能會幫助: Objective-C: How to replace HTML entities?

這基本上是一個類別的NSString有人做,同時提供編碼和的NSString HTML實體解碼。

+0

有沒有辦法阻止NSXMLParser首先轉換它? – Pripyat 2011-05-16 16:36:05

+0

NSXMLParserDelegate具有用於檢測內部實體和外部實體的方法,但我不確定HTML實體是否適合該實體。http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSXMLParserDelegate_Protocol/Reference /Reference.html%23//apple_ref/occ/intf/NSXMLParserDelegate – 2011-05-16 16:37:55

1

XML使用與HTML相同的字符引用編碼機制(儘管它只有5個預定義的命名實體,而不是爲HTML定義的巨大數字)。 &&字符的編碼。

+0

是的,'&'被保留 - 我如何將其轉換回來? – Pripyat 2011-05-16 16:16:28

+0

@DavidSchieer:請參閱[Objective-C]中iPhone的HTML實體編碼(將'<'轉換爲'<')(http://stackoverflow.com/questions/1666717/html-entity-encoding-convert-to-lt -on-iphone-in-objective-c) – Anomie 2011-05-16 16:31:41

-1

您正在使用ISO標準。嘗試使用%26或使用網址編碼。

+0

我已經說過我已經試過了,它沒有工作... – Pripyat 2011-05-16 16:16:45

+0

看看http://stackoverflow.com/questions/1812473/difference-between -url-encode-and-html-encode/1812486#1812486有關HTML編碼與URL編碼的更多信息。此外,%26是urlencoded時'&'的編碼文本。 – Ian 2011-05-16 16:23:17

+0

謝謝 - 我意識到這一點。我面臨的問題是我無法將其轉換回原始值。 – Pripyat 2011-05-16 16:26:23