简体   繁体   English

使用NSXMLParser根据属性解析XML

[英]parsing XML according to attributes with NSXMLParser

I would like to parse xml according to their attributes and saved as dictionary . 我想根据其属性解析xml并保存为dictionary。

the xml output seems like that xml输出看起来像这样

<Tracking event="firstElement">
http://www.firstElement.com
</Tracking>

What i am doing right now is : 我现在正在做的是:

Getting tag name which is Tracking and saving URL. 获取标签名称,即跟踪和保存URL。 But in final , which URL linked event method is unknown. 但最后,哪种URL链接事件方法是未知的。

I have to be save it on NSDictionary and call it like that : 我必须将其保存在NSDictionary上,并这样称呼它:

[dictionary objectForKey:@"firstElement"]; [dictionary objectForKey:@“ firstElement”];

-> (NSURL *) http://www.firstElement.com ->(NSURL *) http://www.firstElement.com

How can i be achieve ? 我该如何实现? Best Regards .. 最好的祝福 ..

You can get event in NSXMLParserDelegate: 您可以在NSXMLParserDelegate中获取事件:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    // reset temp data
    [self.mutableData setString:@""];

    if([elementName isEqualToString:@"Tracking"]) {
        NSString *event = [attributeDict objectForKey:@"event"];
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [self.mutableData appendString:string];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"Tracking"]) {
        NSString *URL = [NSString stringWithFormat:@"%@", self.mutableData];
    }
}

parse to get URL and set dictionary with @{event:URL} 解析以获取URL并使用@{event:URL}设置字典

mutableData is property MutableString mutableData是属性MutableString

@property (nonatomic) NSMutableString *mutableData;

Hope this help you :) 希望这对您有所帮助:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM