gpt4 book ai didi

ios - 使用 NSXMLParser 从 URL 解析

转载 作者:行者123 更新时间:2023-11-28 06:57:28 25 4
gpt4 key购买 nike

我正在制作一个应该从 URL 解析 XML 文件的应用程序。

目前,我只想了解基本的工作原理。我知道这可能看起来你是一个非常非常简单的人,但作为一个新手,有些东西仍然很难理解,但我已经做了一些简单的应用程序。

虽然我已经看过 NSXMLParserDelegate 协议(protocol),但我不知道如何使用这些示例...

我想从这个 URL 解析:

http://jpg.tartu.ee/tunniplaan/xml/periood1.xml

我也看过其他关于同一主题的问题,但我无法找出这些解决方案,它们也不是我想要的。因此,我要问一个具体的问题。

最佳答案

注意:您提供的链接无效。考虑一个简单的例子。

<Class>
<Student>
<Name>John Snow</Name>
</Student>
<Student>
<Name>Harvey Specter</Name>
</Student>
</Class>


- (void)viewDidLoad{
NSURL *url = [[NSURL alloc]initWithString:@"yourURL"];
NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
[parser setDelegate:self];
BOOL result = [parser parse];
}

// Following methods are the NSXMLParser delegate methods :

- (void)parserDidStartDocument:(NSXMLParser *)parser{

//Document Starts...

}

- (void)parserDidEndDocument:(NSXMLParser *)parser{

//Document Ends...

}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{

//This method detects a tag(eg. <Name>)

NSLog(@\"Did start element\");
if ( [elementName isEqualToString:@"Name"]){
NSLog(@"name tag");
// set current tag as "Name" tag
return;
}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
// if current tag is Name

if([currentTag isEqualToString:@"Name"]){
//Take text, JohnSnow or HarveySpecter
NSString *text = string;
}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
// Detects end of tag.(eg. </Name>)

NSLog(@"Did end element");
if ([elementName isEqualToString:@"Name"]){
NSLog(@"Name end");
// Do what's necessary..
}
// set current tag as nil
}

附言您还可以通过解析 xml 动态创建 View 。即,如果检测到“按钮”标签(如上面的“名称”),则可以创建一个 UIButton(框架和按钮标题可以在 xml 中提供。)。对于 UILabel、textField 也是如此。

关于ios - 使用 NSXMLParser 从 URL 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015592/

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