代码之家  ›  专栏  ›  技术社区  ›  nacho4d

如何写入XML文件?

  •  5
  • nacho4d  · 技术社区  · 14 年前

    我想在我的应用程序中写一个不那么复杂但是很大的文件,并且能够通过邮件发送(使用mfmailcomposeviewcontroller) 由于nsxmlement和相关类没有移植到iphone sdk,我有什么创建XML文档的选项? 事先谢谢。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Mike Abdullah    11 年前

    无耻的自我提升: KSXMLWriter

        2
  •  3
  •   Steven Green    11 年前

    我建议使用 KissXML . 作者从与您类似的情况开始,围绕libxml创建了一个NSXML兼容的API包装器。他讨论了选择和决定 here 在他的博客上。

        3
  •  2
  •   ThomasRS    12 年前

    尝试开放源码 XML stream writer for iOS :

    • 用Objective-C编写,一个.h.和.m文件
    • 一个@协议用于命名空间支持,一个用于

    例子:

    // 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>
    
        4
  •  -1
  •   John Franklin    14 年前

    这是NSSTRING大楼的家庭作业。抽象地说,创建一个协议,比如:

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

    确保要保存的所有内容都实现了它,并使用如下内容构建XML:

    -(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;
    }