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