2013-06-25 50 views
0

我試圖序列化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

回答

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; 
+0

我的意思是說,我想要一個nsmutabledictionary與xml的所有內容,就像是一個json文件一樣。 – HelenaM

+0

您是否介意以前推薦的@wain輸入您希望的輸出結果的示例? – Dan