我正在尝试像这样序列化xml:
<Rows>
<RowOne SKATERID="706" MANUFACTURER="A-DZG" ISFACT="F" ISSKATE="F">True</RowOne>
<RowTwo SKATERID="318" MANUFACTURER="A-FGW" ISFACT="F" ISSKATE="T">True</RowTwo>
<RowThree SKATERID="458" MANUFACTURER="A-OPJ" ISFACT="F" ISSKATE="T">False</RowThree>
<RowFour SKATERID="178" MANUFACTURER="A-JSL" ISFACT="F" ISSKATE="T">True</RowFour>
</Rows>
但我的问题是什么是最好的方式,包括属性。到目前为止,我的解析器工作正常,当我检测到节点有属性时,我将它们发送到本地的nsmutabledictionay。但我的问题是如何映射属性的结果和节点的值。例如在RowOne中值为true bute它具有以下属性SKATERID =“706”MANUFACTURER =“A-DZG”ISFACT =“F”ISSKATE =“F”。
in - (void)解析器:(NSXMLParser *)解析器didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
我喜欢这个代码:
if ([attributeDict count] != 0) {
self.myDict = [[NSDictionary alloc] initWithDictionary:attributeDict];
}
in -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
我想弄清楚用节点值
序列化字典的最佳方法是什么我真的很感谢你的帮助
答案 0 :(得分:0)
编辑: 重新阅读你的问题之后,“序列化”是什么意思?在您回答之前,下面的解决方案可能不是您想要的。
如果您的XML属性是静态的,我建议您创建一个自定义类myRowClass,其操作方式如下......
myRow.SkaterID //NSString
myRow.Manufacturer //NSString
myRow.IsFact //BOOL
myRow.IsSkate //BOOL
使用该自定义类,您可以将每个myRow对象推送到NSMutableDictionary中,就像这样...
[myDict setObject:myRow forKey:@"RowOne"]
myRow = nil;
myRowClass *myRow = [[myRowClass alloc]init];
<...Iterate through next XML Node...>
[myDict setObject:myRow forKey:@"RowTwo"]
然后,当您需要访问数据时,您可以像这样检索它......
NSString *myCurrentSkaterID = [[myDict objectForKey:@"RowTwo"].SkaterID]
或
myRowClass *myCurrentRow = [[myRowClass alloc]init];
myCurrentRow = [myDict objectForKey:@"RowTwo"];
NSString *myCurrentSkaterID = myCurrentRow.SkaterID;
答案 1 :(得分:0)