0

1. 我从 url.IN XML 响应中进行 XML 解析,我怎样才能获得元素标签的长度.. 例如:

<Company>
   <Id>1</Id>
   <name>A</name>
</Company>
<Company>
   <Id>2</Id>
   <name>B</name>
</Company>

在此我如何获得“公司”标签的编号,即 2

---> 在解析 XML 时,我在数组中得到了一些 GUID 值,我将它放在一个字符串变量中。但是当我将一个特定的值与字符串变量进行比较时,它没有得到比较..无法知道我哪里出错了?我的数组是

(
{
Id="84a6c6f6-b018-4f0e-8da4-c64bf76be764"
}
)

现在我把它放在这样的字符串变量中:

nam=[[arr objectAtIndex:0]objectForKey:@"Id"]; 

但是如果 arr 的结果是( { Id="00000000-0000-0000-0000-000000000000" } )

如果我比较

if(nam=@"00000000-0000-0000-0000-000000000000")
{
   //do something

}

但是,如果 stmnt 如果 Id 是 00000000-0000-0000-0000-000000000000 ..我该如何比较它,那么我的光标不会出现在这里?

4

3 回答 3

2

仅用于[nam isEqualToString:@"00000000-0000-0000-0000-000000000000"]比较字符串。

PS。即使您可以将字符串与等号进行比较,您的代码仍然无法工作,因为=表示分配,其中==检查是否相等。(因此在您的示例中,您只需将字符串分配给nam变量)


编辑:(刚刚注意到有2个问题)

对于元素计数,您可以在didStartElement委托方法中增加一个整数(正如其他人所说),或者在其中NSMutableArray添加一个对象(例如,从解析的 XML 中获取类实例是有意义的Company。之后myCompanies.count应该给你公司的数量。

于 2012-11-01T09:53:29.580 回答
1

这是你第一个问题的答案。您可以简单地取一个整数变量并将其初始化为零。如果您使用的是 NSXMLParser 然后在

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

使用函数 isEqualToString: 检查名为“Company”的标签的相等性:如果满足条件,则增加计数。

在解析结束时,计数器将计算“公司”标签的出现次数

于 2012-11-01T10:18:50.920 回答
1

如果您在解析时在函数“didStartElement”中使用标记的名称很容易,您可以这样做

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"Company"])
        companyCount++;
}

请让我知道这是否适合您

于 2012-11-01T10:20:50.763 回答