从NSArray获取XML值

时间:2013-12-23 18:11:02

标签: ios objective-c xml nsarray tokenize

我目前正在使用SMXMLDocument作为我的解析器,到目前为止,它解析了一些XML文件。我遇到的唯一问题是它似乎无法处理具有相同名称的孩子,至少在我的情况下。但是这个解析器可以将解析后的XML作为NSArray返回。

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传递),而无需使用非常棒的大型库。提前谢谢。

更新

如果我尝试使用SMXMLDocument获取id,那么NSLog会发生什么:

代码:

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

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

输出:

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

1 个答案:

答案 0 :(得分:0)

经过几个小时的代码争夺,我最终使用另一个名为SHXMLParser的解析器(作为辅助),因为它的语法很简洁。它能够从与NSArray同名的节点返回多个值。从那里我只是比较了数组中的内容并选择了我想要的内容。