-1

我正在从此 XML 中检索数据:

<appMetrics versionName="1.1.0" startDate="2013-04-16" metric="ActiveUsersByDay" groupBy="dayOfYear" endDate="2013-04-18" country="US" version="1.0" generatedDate="4/19/13 10:10 AM">
<day value="6" date="2013-04-16"/>
<day value="4" date="2013-04-17"/>
<day value="2" date="2013-04-18"/>
</appMetrics>

我已经成功地使用了更简单的 XML,例如:

<appMetrics versionName="1.1.0" startDate="2013-04-16" metric="ActiveUsersByDay" groupBy="dayOfYear" endDate="2013-04-18" country="US" version="1.0" generatedDate="4/19/13 10:10 AM">
<day value="6"/>
<day value="4"/>
<day value="2"/>
</appMetrics>

如何在同一个元素下同时提取日值和日期?我过去所做的只是搜索一个元素然后复制字符串,但是有多个部分,所以它不起作用。我必须把它变成一个数组吗?或者有没有办法分别取日值和日期?

4

3 回答 3

1

你应该使用NSXMLParser. 在其委托回调中

parser:didStartElement:namespaceURI:qualifiedName:attributes:

您可以在属性字典中找到所有属性(如value, )。date

编辑

解析真的很简单。只需使用您的数据创建一个解析器,将 self 设置为委托并开始解析。维护一些可变数组,您可以在其中读取所有内容。

请参阅NSXMLParser参考和NSXMLParserDelegate协议。

如果您需要更多帮助,请通过许多教程链接来回答这个问题。

于 2013-04-19T22:29:30.007 回答
0

您将对其进行解析,以便获得以下嵌套结构。

{
    "appMetrics": {
        "versionName": "1.1.0",
        "startDate": "2013-04-16",
        "metric": "ActiveUsersByDay",
        "groupBy": "dayOfYear",
        "endDate": "2013-04-18",
        "country": "US",
        "version": "1.0",
        "generatedDate": "4/19/13 10:10 AM",
        "day": [
            {
                "value": "6",
                "date": "2013-04-16"
            },
            {
                "value": "4",
                "date": "2013-04-17"
            },
            {
                "value": "2",
                "date": "2013-04-18"
            }
        ]
    }
}

您可以使用 解析它NSXMLParser,或者如果您担心性能,libxml2(这NSXMLParser只是一个 Objective-C 包装器)。

于 2013-04-19T23:48:58.257 回答
0

试试这个....

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {          

 if([elementName isEqualToString:@"day"]) {
         currentValue = [attributeDict objectForKey:@"value"];
         currentDate = [attributeDict objectForKey:@"date"];
         NSLog(@"value:%@ date:@", currentValue, currentDate); 
    }
 }
}
于 2013-04-19T23:50:43.013 回答