2012-09-30 250 views
0

在我的iOS應用程序中,我嘗試使用NSXMLParser解析下面的xml。我可以在iOS5中成功解析這個xml,但在iOS6中解析器沒有進入parserdidStartElement。在iOS6 parserDidStartDocument被成功調用,但沒有進入任何其他解析器委託方法..是否有任何問題與XML格式?我怎樣才能解決這個問題..NSXMLParser在iOS5中工作正常,但在iOS6中不工作

  <RESULTS> 
    <ROW> 
    <COLUMN NAME="NAME">Test1</COLUMN> 
    <COLUMN NAME="ANAME">testing xml1</COLUMN> 
    <COLUMN NAME="PHONE">4470111</COLUMN> 
    <COLUMN NAME="REMARKS"/> 
    <COLUMN NAME="XCOORD_DMS">227901.58873387</COLUMN> 
    <COLUMN NAME="YCOORD_DMS">391872.68493206</COLUMN> 
    <COLUMN NAME="XCOORD_WGS">51.49367618</COLUMN> 
    <COLUMN NAME="YCOORD_WGS">25.27912682</COLUMN> 
    </ROW> 
    <ROW> 
    <COLUMN NAME="NAME">Test2</COLUMN> 
    <COLUMN NAME="ANAME">testing xml2</COLUMN> 
    <COLUMN NAME="PHONE">4258444</COLUMN> 
    <COLUMN NAME="REMARKS"/> 
    <COLUMN NAME="XCOORD_DMS">229608.71442946</COLUMN> 
    <COLUMN NAME="YCOORD_DMS">386848.18818915</COLUMN> 
    <COLUMN NAME="XCOORD_WGS">51.51051535</COLUMN> 
    <COLUMN NAME="YCOORD_WGS">25.23373805</COLUMN> 
    </ROW> 
    </RESULTS> 

這是代碼..

- (void) initView:(JsonObject *) pageMenu{ 

    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

    NSURL* url = [NSURL URLWithString:@"http://www.test.in/test.xml"]; 

    NSXMLParser* parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

    [parser setDelegate:self]; 
    [parser parse]; 

    [parser release]; 

} 
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
    attributes:(NSDictionary *)attributeDict{ 
    NSLog (@"I have started"); 

} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName{ 
NSLog (@"I have started"); 

} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

NSLog (@"I have started"); 
} 

-(void) parserDidStartDocument:(NSXMLParser *)parser { 

NSLog (@"I have started"); 
} 

-(void) parserDidEndDocument: (NSXMLParser *)parser { 

NSLog (@"I have started"); 
} 
+0

你能顯示一些代碼嗎? –

+0

Phillipe ..我已經爲你粘貼了一些代碼..如果我使用其他簡單的xmls它會進入所有的解析器代表..問題只是與xml形式..但不知道如何在iOS6中完美工作 – Pras

回答

1

我發現了什麼是XML的問題......在創建它應該被保存爲XML的UTF-8沒有BOM ..這是問題所在。經過這樣做的問題是固定的

+0

大寫或小寫不應有任何區別。問題一定在其他地方 –

+0

Phillipe ..是的你是正確的..我編輯了答案..謝謝你的幫助 – Pras

0

試試這個方法(的委託方法的一部分)

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
{ 
    NSLog(@"Error = %@", parseError); 
} 

我在iOS 6,但不能在iOS 5中得到一個錯誤,卻得到了與,它的錯誤信息說解析有問題。 (Error Domain = NSXMLParserErrorDomain Code = 9「The operation could not be completed。(NSXMLParserErrorDomain error 9.)」)。

可以BTW查看這裏的錯誤代碼:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

我還在試圖找出我自己的問題,但此行可以幫助您在正確的方向。

希望你解決它!

+0

我找到了解決我自己的問題 - 如果你可能得到相同的。我將我的XML標題更改爲編碼UTF-8而不是ISO-8859-1,並且還使用UTF-8編碼保存了XML文件本身。使用UTF-8編碼保存XML文件非常重要,而不是隻更改XML文件中的標題。 希望它可以幫助別人! – Lasse

相關問題