我想解析URL中的一些XML數據。它幾乎可以工作,但預期的數據沒有被記錄。NSXMLParser無法正常工作
這裏是XML數據
<?xml version="1.0" encoding="utf-8"?> <result>
<row>
<id>1</id>
<menu_id>1</menu_id>
<group_id>1</group_id>
<name>Merchandise</name>
<image>bag of beans.jpg</image>
</row>
<row>
<id>4</id>
<menu_id>1</menu_id>
<group_id>1</group_id>
<name>Misc</name>
<image>tea.jpg</image>
</row>
這裏的樣本是我的代碼:
#pragma mark - NSXMLParserDelegate
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
// If you have a more complex object you could init here
// Since I'm just storing a string I won't do anything
if ([elementName isEqualToString:@"name"]) {
// NSLog(@"didStartElement - %@", elementName);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (!self->currentStringValue) {
self->currentStringValue = [[NSMutableString alloc] init];
// NSLog(@"didStartElement - %@", string);
}
[self->currentStringValue appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
NSString *currentStringValue = [self->currentStringValue
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
self->currentStringValue = nil;
if ([elementName isEqualToString:@"name"]) {
self->ourExpectedElementValue = currentStringValue;
NSLog(@"%@",currentStringValue);
}
}
正如你可以在XML數據看,有不止一個「名稱」元素與3日至最後一行讀取
NSLog(@"%@",currentStringValue);
意味着所有的<name>
TA內登錄的所有值GS,而是它僅記錄本:
2013-07-31 19:02:56.394 Touch2Go[1775:11303] Merchandise
我無法重現您的問題。代碼記錄「商品」和「雜項」。爲了避免解析器錯誤,我將缺少的''添加到XML數據中。 –
但是沒有標籤。這是問題嗎? –
AndroidDev
你在第一行有一個起始''標籤。是的,沒有它不會奏效。 –