zoukankan      html  css  js  c++  java
  • iphone开发之iphone解析xml&json1

    解析XML文件示例.

    代码1和代码2是IOS开发的基本内容。

    代码1.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #import <UIKit/UIKit.h>
      
    @class XmlTestViewController;
      
    @interface XmlTestAppDelegate : NSObject <UIApplicationDelegate> {
        UIWindow *window;
        XmlTestViewController *viewController;
    }
    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) IBOutlet XmlTestViewController *viewController;
      
    @end

     

      代码2

    复制代码
     1 #import "XmlTestAppDelegate.h"
    2 #import "XmlTestViewController.h"
    3 @implementation XmlTestAppDelegate
    4 @synthesize window;
    5 @synthesize viewController;
    6 #pragma mark -
    7 #pragma mark Application lifecycle
    8 - (BOOL)application:(UIApplication *)application
    9 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    10 [window addSubview:viewController.view];
    11 [window makeKeyAndVisible];
    12 return YES;
    13 }
    14 - (void)applicationWillResignActive:(UIApplication *)application {}
    15 - (void)applicationDidEnterBackground:(UIApplication *)application {}
    16 - (void)applicationWillEnterForeground:(UIApplication *)application {}
    17 - (void)applicationDidBecomeActive:(UIApplication *)application {}
    18 - (void)applicationWillTerminate:(UIApplication *)application {}
    19 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {}
    20 - (void)dealloc {
    21 [viewController release];
    22 [window release];
    23 [super dealloc];
    24 }
    25 @end
    复制代码
    <BR><BR>

    代码3是controller的头文件。

     代码3

    #import <UIKit/UIKit.h>
      
    @interface XmlTestViewController : UIViewController {
    }
    @end

      controller的实现文件。在这声明了一个xml格式,NSString类型的字符串。并用代码5和代码6定义的类解析。

      代码4

    复制代码
    #import "XmlTestViewController.h"
    #import "FirstXmlParse.h"
    @implementation XmlTestViewController

    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    - (void)viewDidLoad {
    [super viewDidLoad];
    NSString *xml=@"<xml>"
    "<title>标题</title>"
    "<content>内容描述</content>"
    "<time>2011-1-1</time>"
    "</xml>";

    FirstXmlParse *first=[[FirstXmlParse alloc] init];
    [first startParse:xml];
    NSLog(@"title:%@",first.title);
    NSLog(@"content:%@",first.content);
    NSLog(@"time:%@",first.time);
    }

    /*
    // Override to allow orientations other than the default portrait orientation.
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
    */

    - (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
    }

    - (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    }

    - (void)dealloc {
    [super dealloc];
    }
    @end
    复制代码

     代码5

    #import <Foundation/Foundation.h>
      
    @interface FirstXmlParse : NSObject<NSXMLParserDelegate> {
        NSString *title;
        NSString *content;
        NSString *time;
        //定义一个可变字符串
        NSMutableString *contentString;
    }
    @property(nonatomic,retain)NSString *title;
    @property(nonatomic,retain)NSString *content;
    @property(nonatomic,retain)NSString *time;
    @property(nonatomic,retain)NSMutableString *contentString;
    -(void)startParse:(NSString *)xml;
    @end

      代码6.这是解析xml文件的关键内容。

    复制代码
    #import "FirstXmlParse.h"

    @implementation FirstXmlParse
    @synthesize title;
    @synthesize content;
    @synthesize time;
    @synthesize contentString;

    -(void)startParse:(NSString *)xml{
    NSData *data=[xml dataUsingEncoding:NSUTF8StringEncoding];
    //创建xml解析器
    NSXMLParser *xmlParse=[[NSXMLParser alloc] initWithData:data];
    //设置委托
    [xmlParse setDelegate:self];
    [xmlParse parse];
    }

    //解析文档开始
    - (void)parserDidStartDocument:(NSXMLParser *)parser{
    NSLog(@"解析文档开始");
    }

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    NSLog(@"遇到启始标签:%@",elementName);
    self.contentString=[NSMutableString string];
    }

    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    NSLog(@"遇到内容:%@",string);
    [self.contentString appendString:string];
    }

    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    NSLog(@"遇到结束标签:%@",elementName);
    if ([elementName isEqualToString:@"title"]) {
    title=contentString;
    }
    if ([elementName isEqualToString:@"content"]) {
    content=contentString;
    }
    if ([elementName isEqualToString:@"time"]) {
    time=contentString;
    }
    }

    //解析文档结束
    - (void)parserDidEndDocument:(NSXMLParser *)parser{
    NSLog(@"文档解析结束");
    }
    @end
  • 相关阅读:
    Firefox做默认浏览器,点击QQ面板连接(QQ邮箱,空间),延迟很久很久才打开网页(Firefox 浏览器 延迟 打开 点击没反应) 拂晓风起
    web.xml filter执行顺序 java jsp web 拂晓风起
    JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址 拂晓风起
    Javascript 检测 页面是否在iframe中 拂晓风起
    Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录) 拂晓风起
    java输出字符串到多个输出流 同时输出到console终端,网页,文本 拂晓风起
    开启eclipse全部代码提示,自动完成(类似visual studio 2008) 拂晓风起
    java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp 拂晓风起
    struts/Servlet,action转到jsp后,路径问题(struts2,jsp路径,action路径,action跳转,相对路径,绝对路径) 拂晓风起
    C# 14位日期型字符串yyyyMMddHHmmss转变为日期格式
  • 原文地址:https://www.cnblogs.com/zhwl/p/2621969.html
Copyright © 2011-2022 走看看