Apple为对象序列化/反序列化提供NSArchiver和NSUnachriver,但这不能处理任何自定义xml模式。因此,使用任何自定义xml架构的数据填充对象结构必须手动完成。 由于iPhone开发者社区正在快速增长,许多新手程序员正在绝望地处理可用的xml解析可能性。适用于iPhone的Xml序列化库应用程序
iPhone SDK只提供NSXmlParser进行XML解析,这比读取XML文件的某些部分更有用,而不是填充整个对象结构,这真的很痛苦。
另一种可能性是着名的libxml库,它是用ANSI C编写的 - 对于开始使用objective-c编程并且以前从未学过正确的C的人来说,这不太容易。事件有很多可用的包装器,处理xml可能会让新手感到痛苦。
这里我的想法发生。一个自动填充对象结构的XmlSerializer库可以使它更容易,并提高许多程序员的应用程序质量。 我的想法应该像这样工作:
的xml文件
<Test name="Michael" uid="28">
<Adress street="AlphaBetaGammastrasse 1" city="Zürich" postCode="8000" />
<Hobbies>
<Hobby describtion="blabla"/>
<Hobby describtion="blupblup"/>
</Hobbies>
</Test>
的类来填补
@interface Test : NSObject {
NSString *name;
Adress *adress;
NSArray *hobbies;
int uid;
}
@property (nonatomic, copy) NSString *name;
@property (nonatomic, retain) Adress *adress;
@property (nonatomic, retain) NSArray *hobbies;
@property (nonatomic, readwrite) int uid;
@end
@interface Adress : NSObject {
NSString *street;
NSString *city;
int postCode;
}
@property (nonatomic, copy) NSString *street;
@property (nonatomic, copy) NSString *city;
@property (nonatomic, readwrite) int postCode;
@end
如何XML序列化应该工作
NSError *error = nil;
XMLSerializer *serializer = [[XMLSerializer alloc] init];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"TestFile" ofType:@"xml"]];
Test *test = [serializer deserializeWithData:data error:&error];
为了填补对象结构只需要一行代码:
Test *test = [serializer deserializeWithData:data error:&error];
这将是很容易使用任何新手程序员可以使用它。对于更高级的用法,序列化器可以是可配置的。
您认为这是一个对iPhone和OSX应用程序有用且受欢迎的库吗?
编辑: 您可以看到项目here,但它是从发布的票价。
下面是类似的东西我敲在一起:http://kpmattius.wordpress.com/2011/06/07/objective-c-serialization/如果有人有时间,他们可以做更多,但它适用于我:D – 2011-06-07 09:28:08
这将有助于... http://code.google.com/p/wonderxml/ – hrishib 2011-03-15 11:37:26