NSXMLParser解析简例

本篇以以下类型的XML为例解析:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="e0">密码错误</string>

<string name="e1">手机号不存在</string>

<string name="e2">未找到该城市</string>

<string name="e3">参数异常</string>

<string name="e4">鱼种库为空</string>

<string name="e6">文件为空</string>

<string name="e7">参数异常或为空</string>

<string name="e8">发布失败</string>

<string name="e10">token异常,请重新登录</string>

<string name="e11">钓点不存在</string>

<string name="e12">钓点id未找到</string>

<string name="e13">钓点id错误</string>

<string name="e14">收藏失败</string>

<string name="e15">已收藏</string>

<string name="e16">经纬度参数错误</string>

<string name="e18">城市不能为空</string>

<string name="e17">无更多钓点</string>

<string name="e19">插入失败</string>

<string name="e20">手机号码或验证码不正确</string>

<string name="e21">参数类型错误</string>

<string name="e22">数据写入错误</string>

</resources>

-(void)parserXMLFile

{

//打开xml,读取文件内容后关闭文件

NSString * path  = [[NSBundle mainBundle] pathForResource:@"error" ofType:@"xml"];

NSFileHandle * file = [NSFileHandle fileHandleForReadingAtPath:path];

NSData * data = [file readDataToEndOfFile];

[file closeFile];

//初始化解析工具

NSXMLParser * m_parser = [[NSXMLParser alloc]initWithData:data];

//设置代理

[m_parser setDelegate:self];

//开始解析,设置解析结果flag,解析结束后会执行

BOOL flag = [m_parser parse];

if (flag) {

QLLog(@"解析成功");

}else{

QLLog(@"解析失败");

}

}

//开始解析

-(void)parserDidStartDocument:(NSXMLParser *)parser

{

dicXML = [[NSMutableDictionary alloc]initWithCapacity:10];

}

//遇到开始标记

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

{

//QLLog(@"elementName:%@\n namespaceURI:%@\n qName:%@ \n attributeDic:%@",elementName,namespaceURI,qName,attributeDict);

if ([elementName isEqualToString:@"string"]) {

keyCode = [attributeDict objectForKey:@"name"]; //错误码

QLLog(@"keyCode:%@",keyCode);

}

}

//遇到结束标记

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

//QLLog(@"end:  elementName:%@\n namespaceURI:%@\n qName:%@ \n",elementName,namespaceURI,qName);

}

//节点中有值时进入此方法

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

QLLog(@"key:%@",keyCode);

QLLog(@"value:%@",string);//错误说明

string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""];

string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];

if(keyCode.length&&string.length){

[dicXML setObject:string forKey:keyCode];

}

}

//解析结束

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

QLLog(@"dicData:%@",dicXML);

}

时间: 2024-08-30 07:58:41

NSXMLParser解析简例的相关文章

Ansible 入门:安装 简例 playbook应用

Mysql 内:select unix_timestamp('2016-10-20')  <---> select from_unixtime(147662104) 转时间戳:date +%s   <--->  date -d @1476762104              ---- 小 Q -----------------------------------------------------------------------------------------------

linux下C语言socket网络编程简例

转自:http://blog.csdn.net/kikilizhm/article/details/7858405 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后打印出来,然后关闭.程序里有详细的说明,其中对具体的结构体和函数的实现可以参考其他资料. 程序说明: 这里服务器的端口号和ip地址使用固定的设置,移植时可以根据具体情况更改,可以改写为参数传递更好,这里为了方便,使用固定的. 移

require.js【模块化编程】- 模块加载简例

今天去学习了一下javascript的模块化编程,写了个简单的例子. ———————————————— 这是我的第一篇技术性的小博文,希望和大家相互交流  ———————————————— 这个列子我打算分两个部分罗列: 1.文件地图 2.源代码 demo.html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm

XML专题:使用NSXMLParser解析xml文件

使用NSXMLParser解析xml文件 1. 设置委托对象,开始解析     NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];   //或者也可以使用initWithContentsOfURL直接下载文件,但是有一个原因不这么做:     // It's also possible to have NSXMLParser download the data, by passing it a URL, but this

在AFN中使用NSXMLParser解析服务器返回的XML数据

服务器返回的XML格式: 因为苹果没有提供直接获取xml开始标签和结束标签中间的字符串,虽然提供了 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string这个方法获取中间的字符串,但是这个字符串包含了空格和回车,所以要在这个方法中进行过滤. 源代码如下: 8 9 #import "RecommendController.h" 11 #import "SPHTTPRequestTool.h&

Java 远程调用之Hessian简例

1. [代码]1.服务接口(Hello.java) package server; public interface Hello { String hello(String name);}2. [代码]2.接口实现(HelloImpl.java) package server; public class HelloImpl implements Hello{ public String hello(String name) {    return "hello,"+name+"

iOS SDK中使用NSXMLParser解析XML(iphone网络篇三)

iOS SDK的NSXMLParser解析XML文档是事件驱动模式的,即采用SAX方式来解析XML格式文档.NSXMLParser在处理XML文档的过程中当遇到一些要素(元素.属性.CDATA块.评论等)时会通知它的委托,而自身不对解析的要素进行任何处理,全权委托给NSXMLParserDelegate处理.同时它也会报告错误. 1. 打开一个xml文件,读取内容到NSData中. NSString *path = [[NSBundle mainBundle] pathForResource:@

File类的两个应用简例

简例一: 1 import java.io.File; 2 /* 3 * 输出指定目录下所有的java文件名 4 */ 5 public class RecurrnetsText { 6 7 public static void main(String[] args) { 8 //获取src\\com\\hzu\\se20190525\\thread下的所有java文件 9 System.out.println("src\\com\\hzu\\se20190525\\thread下的java文件

FileReader和FileWriter的应用简例

import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * IO流分类: * 流向 * 输入流 读取数据 FileReader Reader * 输出流 写出数据 FileWriter Writer * 数据类型 * 字节流 * 字节流入 读取数据 InputStream * 字节流出 写出数据 OutputStream * 字符流 * 字符流入 读取数据 Reader * 字符流出