-3

我想通过 Web 服务读取 xml 文件中的一些 URL。

<chaneels>
    <chaneel name="AAA">
        <url>http://188.138.95.120:8010/</url>
    </chaneel>
    <chaneel name="gold">
        <url>http://188.138.95.120:8020/</url>
    </chaneel>
    <chaneel name="BBB">
        <url>http://188.138.95.120:8090/</url>
    </chaneel>
    <chaneel name="CCC">
        <url>http://188.138.95.120:8050/</url>
    </chaneel>
    <chaneel name="DDD">
        <url>http://209.239.127.105:8010/</url>
    </chaneel>
</chaneels>

这是XML我从网络服务中得到的。然后我想分别获取这些 URL。谁能告诉我这样做的方法?

4

1 回答 1

1

首先通过检查声明chaneel, item, currentName,currentURLallData元素来启动解析器property

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"channel"]) {
         item = [[NSMutableDictionary alloc] init];
         currentName = [[NSMutableString alloc] init];
         currentURL = [[NSMutableString alloc] init];
         [currentName appendString:[attributeDict objectForKey:@"name"]];
    }
}

之后检索期望值....

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
     if([currentElement isEqualToString:@"url"]) {
            [currentURL appendString:string];
        }
}

之后,在此方法中将值存储到带有期望键的字典中......

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"channel"]) {
        [item setObject:currentName forKey:@"Name"];
        [item setObject:currentURL forKey:@"URL"];

        [allData addObject:[item copy]];
    }
}

在 中allData,您将获得与其名称相对应的所有 URL...

于 2013-06-04T07:58:00.223 回答