ios将xml文件序列化为nsmutabledictionary,其中xml具有多个属性

时间:2013-06-25 17:32:43

标签: ios nsxmlparser

我正在尝试像这样序列化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{

我想弄清楚用节点值

序列化字典的最佳方法是什么

我真的很感谢你的帮助

2 个答案:

答案 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)