2011-06-27 50 views
2

嗨,大家好,我有一点奇怪的问题。我正在使用一个简单的XML到NSDictionary转换器 http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/ 但如果打印NSDictionary,我可以看到节点的文本值,但如果我将它存储在plist中,文本节点将不会有任何字符串值。见附加图像。 i can see the text node value when i print NSdictionaryXML到NSdictionary plist

这里是plist截图。

enter image description here

这里是代码

NSURL * URL = [[NSURL alloc]initWithString:@"rss feed link "]; 
    NSData * data = [[NSData alloc] initWithContentsOfURL:URL]; 
    NSString *testXMLString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 

    // Parse the XML into a dictionary 
    NSError *parseError = nil; 
    NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError]; 
    NSString * filepath = [self dataFilePathwithFilename:[NSString stringWithFormat:@"TEST.plist"]]; 
    [xmlDictionary writeToFile:filepath atomically:YES]; 


    // Print the dictionary 
    NSLog(@"%@", xmlDictionary); 

回答

3

我不认为你的plist文件具有空值。您只是没有考虑到第一张图片("\n\thttp://wordpress.org/?v=3.0.1")中突出显示文本中的新换行符。

一个简单的验证方法是使用文本编辑器打开它。你会发现价值在那里。您也可以导航到属性列表编辑器中的该字段,然后按下按钮。

更换换行符

使用stringByReplacingOccurrencesOfString:withString:@""替换所有换行符。

testXMLString = [testXMLString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

更好的剪裁

这样更换标签(\t)似乎呈现字符串由XMLReader不可读。所以要解决这个问题,更改XMLReader代码以将修剪值插入到字典中会更容易。

在该方法中parser:didEndElement:namespaceURI:qualifiedName:,与

NSString * trimmedString = [textInProgress stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n\t"]]; 
[dictInProgress setObject:trimmedString forKey:kXMLReaderTextNodeKey]; 
+0

哎迪帕克更换

[dictInProgress setObject:textInProgress forKey:kXMLReaderTextNodeKey]; 

我应该怎样解析到NSdicntionary之前从的NSString * testXMLString这些新行字符。 – Amrit

+0

@Amrit更新了我的答案。 –

+0

嘿谢谢迪帕克 – Amrit