2010-10-18 72 views
1

所以有一個XML文件,它解析完全罰款,直到我得到一個元素內有奇怪的標記。 xml文件看起來有點像這樣。iphoneSDK和NSXMLParser問題

<xml> 
    <badtag><![CDATA[ This is the text that i want ]]> </badtag> 
</xml> 

由於某些原因,當它接觸到「that *」標記時,該應用程序會幹草。然後加載下一個視圖,然後它不執行任何適當的操作。基本上它會加載一個空白表視圖,因爲它從不調用「cellForRowAtIndexPath」(或任何其他基本的表格方法)。

我絕對沒有解釋這一點。如果我刪除該標籤,我可以讓它加載完美地解析XML文件。

無論如何,我可以搜索整個XML文件並在運行時刪除「< [CDATA [」和「]]>」的所有實例。

巨大編輯:

我剛纔注意到,如果我輸入

<! C D A T A(無論文字在這裏消失)]]>
在這裏,它阻止了所有的文字。

回答

0

'<''&'和'>'是HTML保留字符以及一些其他字符,它們需要轉義才能正確傳遞,否則會產生錯誤。有效的XML應該已經轉義了這些字符,所以它應該在服務器端固定。

如果您使用的是NSXMLParser,並且您嘗試通過它運行無效輸入,就像您上面所做的一樣,它將產生錯誤並停止傳遞XML的內容。

如果您無法訪問源XML,請留下評論,我會查看是否可以找到人們修復它的一些方法。

+0

我沒有訪問該文件,但我想我已經回答了我自己的問題。在我意識到這個網站出現問題後,我對CDATA做了更多的研究。 – 2010-10-18 06:01:24

+0

@Forgotten王朝:是的,您可以通過CDATA回撥方式獲取數據。讓解析器完成相繼的任務。我認爲如果你使用普通的libxml庫,你將有更多的解析XML文件的概念。 – boom 2010-10-18 10:42:27

0
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock 
{ 
    NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding]; 
}