2010-08-09 65 views
0

我試圖通過NSXMLParser檢索XML文檔中DTD的公共和系統ID。雖然NSXMLParser主要提供publicIDsystemID選擇器,他們似乎並不適合我。 DOCTYPE標籤是這樣的:如何使用NSXMLParser獲取DTD的公共和系統ID

<!DOCTYPE Article PUBLIC "-//SoftQuad Software//DTD Journalist v2.0 20000501//EN" "file:///C:/Program%20Files/Corel/XMetaL%204/Author/Rules/journalist.dtd"> 

這裏是我的代碼(該文件是通過打開NSFileHandlereadDataToEndOfFile

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; 
[parser setDelegate:self]; 
BOOL parseSuccessful = [parser parse]; 

在代理的parserDidStartDocument:我嘗試訪問的ID:

NSLog(@"%@ : %@", [parser publicID], [parser systemID]); 

但我只看到

(null) : (null) 

從文檔:

一次解析操作已開始或發生錯誤後,您可以調用此方法。

所以我想這應該在parserDidStartDocument:已經工作,但我想調用不同的委託方法這些選擇(如parser:didStartElement:namespaceURI:qualifiedName:attributes:但沒有成功。

任何想法我做錯了嗎?

回答