2010-10-03 13 views
5

मैं अपने ऐप के भीतर एक जटिल लेकिन बड़ी फ़ाइल लिखना नहीं चाहता हूं और इसे मेल द्वारा भेजने में सक्षम हूं (एमएफमेल कॉमपॉइस व्यू कंट्रोलर का उपयोग करके) चूंकि एनएसएक्सएमलेमेंट और संबंधित कक्षाएं आईफोन एसडीके को पोर्ट नहीं की गई हैं, इसलिए एक्सएमएल दस्तावेज़ बनाने के लिए मेरे पास कौन से विकल्प हैं? अग्रिम धन्यवाद।एक्सएमएल फाइलें कैसे लिखें?

+0

[आईओएस एक्सएमएल लेखक वर्ग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3969959/ios-xml-writer-class) – Pang

उत्तर

2

बेशर्म आत्म पदोन्नति: KSXMLWriter

+0

अपने यूआरएल से निकालें: "आईओएस समर्थन परियोजना में अच्छा होगा।" – JosephH

+0

यह काम करना चाहिए, क्योंकि मैं केवल फाउंडेशन का उपयोग कर रहा हूं; अभी तक इसका परीक्षण नहीं किया है –

-1

यह एनएसएसटींग भवन में एक होमवर्क व्यायाम है। यकीन है कि सब कुछ सुनिश्चित करें कि आप बचत कर रहे हैं यह लागू करता

@protocol XmlExport 
-(NSString*)xmlElementName; 
-(NSString*)xmlElementData; 
-(NSDictionary*)xmlAttributes; 
-(NSString*)toXML; 
-(NSArray*)xmlSubElements; 
@end 

और निम्नलिखित की तरह कुछ के साथ एक्सएमएल का निर्माण: संक्षेप में, की तरह एक प्रोटोकॉल बनाने

-(NSString*)toXML { 
    NSMutableString *xmlString; 
    NSString *returnString; 

    /* Opening tag */ 
    xmlString = [[NSMutableString alloc] initWithFormat:@"<%@", [self xmlElementName]]; 
    for (NSString *type in [self xmlAttributes]) { 
     [xmlString appendFormat:@" %@=\"%@\"", type, [[self xmlAttributes] valueForKey:type]]; 
    } 
    [xmlString appendString:@">"]; 

    /* Add subelements */ 
    for (id<XmlExport> *s in [self xmlSubElements]) { 
     [xmlString appendString:[s toXML]]; 
    } 

    /* Data */ 
    if ([self xmlElementData]) { 
     [xmlString appendString:[self xmlElementData]]; 
    } 

    /* Close it up */ 
    [xmlString appendFormat:@"</%@>", [self xmlElementName]]; 

    /* Return immutable, free temp memory */ 
    returnString = [NSString stringWithString:xmlString]; 
    [xmlString release]; xmlString = nil; 

    return returnString; 
} 
+3

रिलीज/शून्य लाइन मेरी आदत है जो मुझे हमेशा से रखने में रखती है लापरवाही सूचक मुद्दों। हां, यह अनावश्यक है, लेकिन प्रदर्शन लागत बहुत कम है और अनुकूलक इसे हटा देगा। फिर भी, यह अभी भी एक आदत है जिसे मैं अनुशंसा करता हूं। –

+0

अपने वर्र्स को नील करने के बारे में, http://iphonedevelopment.blogspot.com/2010/09/dealloc.html – TomH

2

ओपन सोर्स XML stream writer for iOS:

  • लिखित में आज़माएं उद्देश्य-सी, एक एकल। एच। और .m फ़ाइल नाम स्थान समर्थन के लिए
  • एक @protocol और वे इसके बिना

उदाहरण के लिए:

// allocate serializer 
XMLWriter* xmlWriter = [[XMLWriter alloc]init]; 

// start writing XML elements 
[xmlWriter writeStartElement:@"Root"]; 
[xmlWriter writeCharacters:@"Text content for root element"]; 
[xmlWriter writeEndElement]; 

// get the resulting XML string 
NSString* xml = [xmlWriter toString]; 

यह निम्न XML स्ट्रिंग का उत्पादन:

<Root>Text content for root element</Root> 
+0

मैं जॉन फ्रैंकलिन्स के उत्तर पर टिप्पणी करने में सक्षम नहीं हूं, लेकिन उसका जवाब क्लासिक असफल है क्योंकि यह कोई एक्सएमएल बच नहीं रहा है। उत्पादन कोड में हमेशा एक उचित धारावाहिक का उपयोग करें, उपर्युक्त प्रयास न करें। – ThomasRS

+0

यह strem – Arsynth

+0

में फ़ाइल करने के लिए xml डेटा लिखने का कोई तरीका नहीं है यह बाइट्स की नहीं, एक्सएमएल घटनाओं की एक धारा है। हालांकि लगातार बाइट्स को आउटपुट करने के लिए विकी दस्तावेज़ देखें। – ThomasRS

3

मैं का उपयोग कर की सिफारिश करेंगे KissXML। लेखक ने आपके जैसी ही स्थिति में शुरुआत की और libxml के आस-पास एक एनएसएक्सएमएल संगत एपीआई रैपर बनाया। उन्होंने अपने ब्लॉग पर विकल्पों और निर्णयों here पर चर्चा की।

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