0

我正在尝试像这样序列化一个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 但它具有以下属性 SKATERID="706" MANUFACTURER="A-DZG" ISFACT="F" ISSKATE="F" 。

在 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURIqualifiedName:(NSString *)qName 属性:(NSDictionary *)attributeDict{

我有这样的代码:

if ([attributeDict count] != 0) {
    self.myDict = [[NSDictionary alloc] initWithDictionary:attributeDict];
}

in -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

我想弄清楚用节点的值序列化字典的最佳方法是什么

我会非常感谢你的帮助

4

2 回答 2

0

这就是我正在寻找的http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/

于 2013-06-25T23:10:41.103 回答
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;
于 2013-06-25T18:12:37.587 回答