IOS序列化的XML文件到nsmutable字典,其中XML有多个atributes

问题描述:

我试图序列化XML这样的:IOS序列化的XML文件到nsmutable字典,其中XML有多个atributes

<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> 

但我的问题是,什么是做它包括atributes的最佳途径。到目前为止,我有我的解析器工作,当我检测到节点具有属性,我将它们发送到本地nsmutabledictionay。但我的问题是如何映射attibutes的dictonary和节点的值。例如在RowOne中,值是真实的bute它具有以下属性SKATERID =“706”MANUFACTURER =“A-DZG”ISFACT =“F”ISSKATE =“F”。

在 - (无效)解析器:(的NSXMLParser *)解析器didStartElement:(的NSString *)的ElementName的namespaceURI:(的NSString *)的namespaceURI的qualifiedName:(的NSString *)QNAME属性:(的NSDictionary *)attributeDict {

我有这种类似的代码:

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

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

我想弄清楚什么是序列化的词典与节点的值的最佳方式

我会很感激你的帮助

+1

如何显示您当前的代码和你想要的结果。 – Wain

+0

我希望如果HelenaM会给我我的复选标记,因为她给我的解决方案使用了didStartElement = P – Dan

+0

xcode,iphone和ipad标记与您的问题无关。这就是为什么他们被删除。 – rmaddy

编辑: 重新读你的问题后,你是什么意思的“序列化”?等待您的回答下面的解决方案可能不是你想要的。

如果你的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; 
+0

我的意思是说,我想要一个nsmutabledictionary与xml的所有内容,就像是一个json文件一样。 – HelenaM

+0

您是否介意以前推荐的@wain输入您希望的输出结果的示例? – Dan