gpt4 book ai didi

ios - NSXMLParser 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:10:11 26 4
gpt4 key购买 nike

我正在尝试从 URL 解析一些 XML 数据。它几乎可以正常工作,但没有记录预期的数据。

这是 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 数据中看到的,有多个“名称”元素,倒数第三行显示为

NSLog(@"%@",currentStringValue); 

用于记录所有 <name> 中的所有值标签,但它只记录这个:

2013-07-31 19:02:56.394 Touch2Go[1775:11303] Merchandise

最佳答案

正如讨论中所证明的那样,XML 数据没有单个顶级元素根据 XML 规范的要求,它看起来像这样:

<row> 
...
</row>
<row>
...
</row>
<row>
...
</row>

解析器在第一个完整的“行”标记后停止解析(并返回错误条件)。如果数据包含在单个顶级元素中

<result> 
<row>
...
</row>
<row>
...
</row>
<row>
...
</row>
</result>

然后所有元素都按预期解析。

关于ios - NSXMLParser 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com