【发布时间】:2012-10-19 09:22:52
【问题描述】:
我正在解析 XML 响应。但我没有得到想要的结果。不明白我哪里出错了?
我的 XML 响应如下所示:
<List>
<User>
<Id>1</Id>
</User>
<User>
<Employee>
<Name>John</Name>
<TypeId>0</TypeId>
<Id>0</Id>
</Employee>
<Id>0</Id>
</User>
</List>
由此我想要 Id(1) 和 Name(John) 的值。我不想要 Id(0)
我的解析代码是:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"List"])
{
arr=[[NSMutableArray alloc] init];
drr=[[NSMutableDictionary alloc] init];
}
srr=[[NSMutableString alloc] init];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[srr appendString:string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"Id"])
{
[drr setObject:srr forKey:@"Id"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"Name"])
{
[drr setObject:srr forKey:@"Name"];
[srr release],srr=nil;
[arr addObject:drr];
return;
}
if([elementName isEqualToString:@"List"])
{
[drr release];
}
[srr release],srr=nil;
}
我希望输出是:
(
{
Name="John";
Id="1";
}
)
但我是这样的:
(
{
Name = John;
Id = "0";
},
{
Name = John;
Id = "0";
}
)
我该怎么做?
【问题讨论】:
-
使用这个链接[xml解析示例][1][1]:stackoverflow.com/questions/13117711/…
-
您的示例中列出的 XML 非常奇怪。根据格式,它看起来像有 2 个用户(id 0 和 id 1),并且用户 0 有/是一个名为 John 的员工,其 id 也是 0,并且是 id 0 类型。这更奇怪的是结果是您想要“Name=John:Id=1”。我可以理解,在许多情况下您无法发布您的真实 XML 数据,但更接近真实的内容肯定会帮助我们帮助您。
-
但是我从服务 url 得到这个响应,我必须照原样做..我无法更改服务。请帮助..
标签: iphone xcode4 xml-parsing nsxmlparser