您的位置:首页 > Web前端 > JavaScript

JSON和XML的区别

2015-11-20 15:00 585 查看
首先就样子来说

json文件是这个样子

{"err":"-1","msg":"user_id\u53c2\u6570\u9519\u8bef","data":""}
xml文件是

<?xml version="1.0" encoding="UTF-8"?>
<recipe>
<recipename>Ice Cream Sundae</recipename>
<preptime>5 minutes</preptime>
</recipe>


(ps:网上随意摘抄的)

首先就形式看起来,json是比xml直观,xml比json更清晰,因为标签比较多,所以xml看起来比json冗余些

其次是json的读取速度比xml快,体积小,但是xml可以进行读和写,一般情况不会进行写的操作,不过也没有那么绝对就是了

最后就是json的写法是

NSData *data = [[NSData alloc] initWithContentsOfURL:url];
if(data==nil) return;
id jsonObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];


简单,明确

xml的写法是

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
parser.delegate = self;
[parser parse];
看起来也很简单对不对,不过他需要用到的协议比较多

/**
在创建好对象后开始解析文档
*/
-(void)parserDidStartDocument:(NSXMLParser *)parser
{
_notes = [NSMutableDictionary dictionary];
}


/**
遇到开始标签
*/
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
_currentTag = elementName;
}


/**
遇到字符串触发
*/
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([string isEqualToString:@""]) {
return;
}
[_notes setObject:string forKey:_currentTag];
}


/**
遇到结束标签时触发
*/
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
_currentTag = nil;
}
/**
结束解析触发
*/
-(void)parserDidEndDocument:(NSXMLParser *)parser
{
}
他一共需要5个协议才可以正确的开始解析xml,就这点来说是比较麻烦的,并且它是无序的,不会按照顺序下来的

不过你可以在
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
这里获取指定标签的内容,而不必把所有的都记录下来,不过他还是要遍历全部才行

json比xml更占主流,更加流行,现在已经基本上见不到多少使用xml解析的了

这里就不得不感叹一下互联网的发展速度和更新速度了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: