5

我想在我的应用程序中编写一个不太复杂但很大的文件,并能够通过邮件发送它(使用 MFMailComposeViewController) 由于 NSXMLElement 和相关类未移植到 iPhone SDK,我有哪些选项可以创建 XML 文档?提前致谢。

4

4 回答 4

3

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

于 2010-10-19T23:15:49.050 回答
2

无耻的自我推销:KSXMLWriter

于 2010-10-03T22:01:44.990 回答
2

试用适用于 iOS的开源XML 流编写器:

  • 用 Objective-C 编写,单个 .h。和 .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>
于 2010-10-19T23:09:59.220 回答
-1

这是 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;
}
于 2010-10-03T10:02:32.607 回答