2013-12-23 88 views
0

我目前使用SMXMLDocument作爲我的分析器,到目前爲止,它解析一些XML文件的功能非常出色。我遇到的唯一問題是,它似乎無法處理同名兒童,至少在我的情況下。但是這個解析器可以將解析的XML作爲一個NSArray返回。從NSArray獲取XML值

的NSArray的是這樣的:

(
"<id>https://spreadsheets.goog\U2026</id>", 
"<updated>2013-12-23T17:54:04.814Z</updated>", 
"<category term=\"http://schemas.google.com/spreadsheets/2006#cell\" scheme=\"http://schemas.google.com/spreadsheets/2006\"/>", 
"<title type=\"text\">A1</title>", 
"<content type=\"text\">What?</content>", 
"<link rel=\"self\" type=\"application/atom+xml\" href=\"https://spreadsheets.google.com/feeds/cells/some key/od6/private/full/R1C1\"/>", 
"<link rel=\"edit\" type=\"application/atom+xml\" href=\"https://spreadsheets.google.com/feeds/cells/some key/18o84x\"/>", 
"<cell row=\"1\" col=\"1\" inputValue=\"What?\">What?</cell>", 
"<id>A1</id>", 
"<status code=\"200\" reason=\"Success\"/>", 
"<operation type=\"update\"/>") 

所以我的問題是,如何將我得到的值(和屬性)從XML?如果有一種方法來標記這個(即通過數組作爲一個帶有for-in循環的NSString或某個東西),而不必使用一個很棒的大型花式庫。提前致謝。

更新:

這裏是發生什麼事了的NSLog,如果我嘗試獲取ID與SMXMLDocument:

代碼:

SMXMLElement* testEntry = [feed childNamed:@"entry"]; 

     NSLog(@"id: %@", [testEntry valueWithPath:@"id"]); 

輸出:

id: https://spreadsheets.google.com/feeds/cells/some key/od6/private/full/R1C1 
+0

你可以發佈你的嘗試代碼?您鏈接的SMXMLDocument頁面上的示例似乎用'NSString * title = [book valueWithPath:@「title」]回答您的問題; //快速枚舉循環中的//子節點值。 –

+0

我添加了代碼。請參閱更新。 – iwatakeshi

+0

你也不能用'valueWithPath:'快速枚舉。 Xcode會給我一個「可能不會迴應」的警告。 – iwatakeshi

回答

0

小時後與代碼作鬥爭,我結束了使用另一個解析器(作爲次要)稱爲SHXMLParser因爲它的整齊的語法。它能夠從與NSArray具有相同名稱的節點返回多個值。從那裏我只比較了陣列中的內容並挑選了我想要的內容。