2012-02-03 15 views
5

मैं एनएस डिक्शनरी को एक्सएमएल में बदलने की कोशिश कर रहा हूं। (मैं NSDictionary को JSON में बदलने में सफल रहा था)। लेकिन अब मुझे एनएस डिक्शनरी को एक्सएमएल में बदलने की जरूरत है। क्या उद्देश्य-सी में जेएसओएन के लिए एक अंतर्निहित धारावाहिक है?एनएस डिक्शनरी एक्सएमएल

int r = arc4random() % 999999999; 

//simulate my NSDictionary (to be turned into xml) 
NSString *name = [NSString stringWithFormat:@"Posted using iPhone_%d", r]; 
NSString *stock_no = [NSString stringWithFormat:@"2342_%d", r]; 
NSString *retail_price = @"12345"; 

NSArray *keys = [NSArray arrayWithObjects:@"name", @"stock_no", @"retail_price", nil]; 
NSArray *objects = [NSArray arrayWithObjects:name,stock_no,retail_price, nil]; 
NSDictionary *theRequestDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

NSDictionary *theFinalRequestDictionary = [NSDictionary dictionaryWithObject:theRequestDictionary forKey:@"product"]; 

... // अन्य अप्रासंगिक कोड छोड़े गए

NSData *theBodyData = [NSPropertyListSerialization dataFromPropertyList:theFinalRequestDictionary format:NSPropertyListXMLFormat_v1_0 errorDescription:nil]; 
NSPropertyListFormat format; 

id XMLed = [NSPropertyListSerialization propertyListFromData:theBodyData 
              mutabilityOption:NSPropertyListImmutable 
                 format:&format 
              errorDescription:nil]; 

NSLog(@"the XMLed is this: %@", [NSString stringWithFormat:@"%@", XMLed]); 

NSLog XML स्वरूप में एक स्ट्रिंग प्रिंट नहीं करता। यह इसे NSDictionary की तरह प्रिंट करता है। मुझे अपने NSDictionary को XML में क्रमबद्ध करने के लिए क्या उपयोग करना चाहिए?

+0

आप मैन्युअल रूप से परिवर्तित करना चाहिए। – Nekto

+0

मुझे लगता है कि एक आसान तरीका है? क्योंकि उद्देश्य-सी में JSON के लिए एक अंतर्निहित धारावाहिक है। – acecapades

उत्तर

2

propertyListFromData:... डेटा की सामग्री, एक सरणी या शब्दकोश के आधार पर "संपत्ति सूची वस्तु" देता है। जिस चीज में आप वास्तव में रुचि रखते हैं (xml) dataFromPropertyList:... द्वारा वापस किया जाता है और इस प्रकार आपके theBodyData चर में संग्रहीत किया जाता है।

इस प्रयास करें:

NSLog(@"XML: %@", [[[NSString alloc] initWithData:theBodyData encoding:NSUTF8StringEncoding] autorelease]); 
+0

यह सत्यापित करने के लिए कि क्या बॉडीडाटा वास्तव में एक्सएमएल प्रारूप में है या नहीं, मैं NSLog का उपयोग कैसे करूं? धन्यवाद! – acecapades

+0

मैंने एक उदाहरण जोड़ा है। – omz

+0

यह चाल है। बहुत धन्यवाद @omz बहुत धन्यवाद! – acecapades

0

एक्सएमएल की कई अलग-अलग किस्में हैं। यदि आप विशिष्ट टैग के बारे में पसंद नहीं करते हैं, और यदि आपकी शब्दकोश की सामग्री संपत्ति सूचियों (एनएसएसटींग, एनएसएनंबर, एनएसडीएटी, इत्यादि) में उपयोग किए जाने वाले प्रकारों तक ही सीमित है, तो आप अपनी शब्दकोश को एक पंक्ति सूची में एक सूची में लिख सकते हैं:

[myDict writeToFile:somePath atomically:YES]; 

आप के बजाय एक फ़ाइल के लिए लिख की स्मृति में एक्सएमएल रखना चाहते हैं, तो NSPropertyListSerialization का उपयोग के रूप में आप कर रहे हैं।

+0

लेकिन जब मैं इसे मुद्रित करने के लिए NSLog का उपयोग करता हूं तो मैं इसे xml में परिवर्तित नहीं कर सकता। क्या NSPropertyListSerialization के लिए मेरा वाक्यविन्यास सही है? – acecapades

संबंधित मुद्दे