2012-04-25 11 views
6

वहाँ एक रास्ता है कि मैं जब यह प्रोग्राम के रूप में बनाने उचित तरीके से एक XML फ़ाइल फ़ॉर्मेट कर सकते हैं वह फ़ॉर्मेट है करने के लिए?कोको - कैसे एक XML फ़ाइल

उदाहरण के लिए, अगर मैं एक साधारण XML फ़ाइल बनाने के लिए इस कोड का उपयोग करें:

NSXMLElement *fallback_driver = [[NSXMLElement alloc] initWithName:@"fallback-driver"]; 

NSXMLElement *folder = [[NSXMLElement alloc] initWithName:@"folder"]; 
[folder setStringValue:[ads_make objectValueOfSelectedItem]]; 
NSXMLElement *filename =[[NSXMLElement alloc] initWithName:@"filename"]; 
[filename setStringValue:ads_driver_name_selected]; 

[fallback_driver addChild:folder]; 
[fallback_driver addChild:filename]; 

NSXMLElement* rootNode = [ads_user_printxml rootElement]; 
[rootNode addChild:fallback_driver]; 

जब ऐसा चलाया जाता है, मैं नीचे छवि में टिप्पणी की धारा के अनुसार, नहीं होने के लिए उत्पादन करना चाहते हैं वास्तविक एक्सएमएल (जिस पर टिप्पणी नहीं की गई है)।

xml code

मैं कैसे एक्सएमएल कि जिस तरह से फ़ाइल स्वरूप कर सकते हैं? धन्यवाद!

पीएस

जवाब के लिए धन्यवाद .. हालांकि, मैं NSXMLDocument को बचाने के लिए NSData में मेरे पास है परिवर्तित करने के लिए चाहते हैं ...

मैं

NSData *newData = [[ads_user_printxml XMLDataWithOptions:NSXMLNodePrettyPrint]XMLData]; 

कोशिश कर रहा हूँ लेकिन मैं एक चेतावनी हो रही है कि "'एनएसडीटा' '-XMLData' का जवाब नहीं दे सकता है, जहां मैंने XMLDataWithOptions को जोड़ने से पहले यह ठीक काम कर रहा था। मैंने 'XMLStringWithOptions' विधि भी कोशिश की (जैसा आपने कहा - लेकिन यह अनुमान लगाया गया कि डेटा अधिक उपयुक्त था), लेकिन एक ही चेतावनी उत्पन्न किया गया था।

कोई भी मैं deas? आपका बहुत बहुत धन्यवाद!

उत्तर

11

आप उत्पादन एक ठीक से स्वरूपित एक्सएमएल स्ट्रिंग निम्नलिखित का उपयोग कर सकते हैं:

NSString* string = [xmlNode XMLStringWithOptions:NSXMLNodePrettyPrint]; 

नोट क्योंकि NSXMLDocument और NSXMLElementNSXMLNode की उपवर्गों हैं, तो आप उन कक्षाएं भी साथ ऐसा कर सकते हैं।

आप एक स्ट्रिंग के बजाय NSData चाहते हैं, बस करो:

NSData* xmlData = [xmlNode XMLDataWithOptions:NSXMLNodePrettyPrint]; 
+0

जवाब के लिए धन्यवाद .. मैं मूल प्रश्न एक छोटा सा बदलाव कर दिया है .. आप बहुत दयालु मुझे देने के लिए के रूप में एक होगा आगे संकेत दें कि मैं वास्तव में एनएसडीटा को कैसे बचा सकता हूं, मैं बहुत सराहना करता हूं। मुझे मूल प्रश्न में उल्लेख किया जाना चाहिए था। धन्यवाद। – Kevin

+2

मैंने अपना जवाब अपडेट कर दिया है। आपके प्रश्न में आपका संपादन सही है सिवाय इसके कि आप परिणाम पर 'XMLData' को कॉल कर रहे हैं। यह काम नहीं करेगा और अनावश्यक है, क्योंकि 'XMLDataWithOptions:' का आउटपुट पहले से ही 'NSXMLNode 'ऑब्जेक्ट नहीं है, न कि' NSData 'ऑब्जेक्ट है। –

+0

बहुत अच्छा काम करता है, बहुत रोब धन्यवाद! – Kevin