2011-06-27 5 views
2

こんにちは、私は少し奇妙な問題があります。 NSDictionaryコンバーターへのシンプルなXMLを使用しています 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 to 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")の改行文字を考慮していません。

これを確認する簡単な方法の1つは、テキストエディタを使用してファイルを開くことです。値があることがわかります。プロパティリストエディタでそのフィールドに移動し、下へボタンを押すこともできます。 @""とすべての改行文字を置き換えるために改行文字

使用stringByReplacingOccurrencesOfString:withString:方法を交換

。このよう置き換えるタブとして

をトリミング

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

ベター(\tXMLReaderによって読めない文字列をレンダリングするようです。したがって、これを修正するには、辞書にトリムされた値を挿入するコードを変更するのが簡単です。方法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

ちょっと感謝deepak – Amrit

関連する問題