XML是一种通用的数据交换格式,基本解析方式有SAX和DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。
DOM解析器读入整个文档,挼后构建一个驻留内存的树结构,软后代码就可以使用DOM接口来操作这个树结构。优点:整个文档树在内存中,便于操作,支持删除,修改等操作;缺点:将整个文档调入内存,让费时间和空间;使用场合:一旦解析了文档还需要多次访问这些数据,硬件资源充足。
SAX解析器通过事件驱动。当解析器发现元素开始,元素结束,文本,文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入文档,占用资源少;缺点:不是持久的,事件过后若没保存数据,数据就丢了;无状态性;从事件中只能得到文本,不知道文本属于哪个元素。使用场合:只需要xml文档很少内容,很少回头访问,机器内存少。
SAX解析实例:
//生成xml字符串 private String toXML(){ StringBuffer s=new StringBuffer(); s.append("<?xml version='1.1' encoding='utf-8'?>"); s.append("<Student><name>孤狼</name>"); s.append("<age>20</age>"); s.append("<sex>men</sex></Student>"); return s.toString(); }
//解析XML方法 private void parserXML(String xml){ SAXParserFactory spf=SAXParserFactory.newInstance(); SAXParser sp; try { sp = spf.newSAXParser(); StudentPresertHandler sph=new StudentPresertHandler(); sp.parse(new ByteArrayInputStream(xml.getBytes()),sph); Student stu=sph.getStudent(); } catch (Exception e) { e.printStackTrace(); } }
//解析XML具体实现类 public class StudentPresertHandler extends DefaultHandler { boolean name,age,sex; Student s=new Student(); //读取文本 @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String str=new String(ch).substring(start, length+start); if(name) s.setName(str); else if(age) s.setAge(Integer.parseInt(str)); else if(sex) s.setSex(str); } @Override public void endDocument() throws SAXException { super.endDocument(); } //读取标签对结束标签 @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); if(localName.equals("name")) name=false; if(localName.equals("age")) age=false; if(localName.equals("sex")) sex=false; } @Override public void startDocument() throws SAXException { super.startDocument(); Student student=new Student(); } //读取标签对开始标签 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if(localName.equals("name")) name=true; else if(localName.equals("age")) age=true; else if(localName.equals("sex")) sex=true; } public Student getStudent(){ return s; } }
JSON是存储和转换文本信息的语法,类似XML。
JSON比XML更小,更快,更容易解析。
//JSON格式,{}为对象,[]为数组 { "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] }
JSON实例:
//将student对象转换成Json格式字符串(需要架包) 也可以通过标准格式进行转换 private String toJson(){ Student student=new Student(); student.setName("方兵"); student.setAge(18); student.setSex("man"); JSONObject js=new JSONObject(); return js.fromObject(student).toString(); }
//解析Json private void parserJSON(String body){ JSONTokener jsonparser=new JSONTokener(body); JSONObject js; try { js = (JSONObject) jsonparser.nextValue(); Student student=new Student(); student.setName(js.getString("name")); student.setAge(Integer.parseInt(js.getString("age"))); student.setSex(js.getString("sex")); System.out.println("name="+student.getName()+"age="+student.getAge( )+"sex="+student.getSex()); } catch (Exception e) { e.printStackTrace(); } }
相关推荐
在这个"iOS xml解析和json解析demo"中,我们将探讨如何在iOS应用中处理这两种数据格式。 首先,我们来看XML解析。在iOS中,有两种主要的XML解析方式:NSXMLParser和XMLParser。NSXMLParser是基于事件驱动的解析器,...
仅依赖jdk把xml解析为json,支持多层xml转为json字符串
本资料包包含`dom4j`和`fastjson`两个库,分别用于处理XML和JSON解析。 1. **DOM4J**: DOM4J是一个Java库,它提供了全面和强大的XML处理功能。DOM(Document Object Model)是W3C推荐的一种解析XML的标准模型,...
这个方法可能接受XML文件的路径作为参数,然后使用选择的XML解析器(如DOM或SAX)读取文件,接着使用JSON库将解析出的XML数据转化为JSON对象。 4. **使用示例**:在测试类中,创建一个测试方法调用工具类的方法,...
MusicXML是一种开放标准的音乐符号交换格式,它允许数字音乐...总之,"MusicXML解析与布局"项目涵盖了XML解析、数据结构设计、图形渲染、音乐理论等多个方面的知识,对于深入理解音乐和计算机科学的结合具有重要意义。
融合了XML与JSON的合成与解析(包括创建、更新、添加、删除、显示等操作)
JSON解析可以借助Gson库,XML解析可以使用`XmlPullParser`或第三方库。在WebView中加载服务器返回的HTML内容,可以利用`loadData`或`loadDataWithBaseURL`方法。这些技术在Android开发中至关重要,能有效提升应用的...
一直苦恼xml转json,很多工具类支持,但是转换的效果都很差,一个偶然的时间,我找到这个资源,分享给大家,解析效果相当不错。 使用方法: //将xml转为json JSONObject xmlJSONObj = XML.toJSONObject(ret);
1. 解析XML:使用XML解析器(如Java的DOM解析器,Python的ElementTree等)将XML字符串转换为DOM树或类似的结构。 2. 转换结构:遍历DOM树,将元素和属性映射到JSON键值对。 3. 序列化JSON:将转换后的结构转换为JSON...
5. **安全与最佳实践**:在处理XML到JSON的转换时,应注意防止XXE(XML External Entity)攻击,这是一种利用XML解析器漏洞获取服务器敏感信息的攻击方式。确保使用安全配置的XML解析器,并避免解析不受信任的XML...
本篇文章将深入探讨AFNetworking如何进行XML和JSON解析,并将解析结果转化为字典格式。 首先,我们来看XML解析。XML(eXtensible Markup Language)是一种标记语言,用于描述数据结构,常用于服务器与客户端之间的...
SAX(Simple API for XML)是一种基于事件驱动的XML解析器,适用于处理大型XML文档,因为它不会将整个文档加载到内存中。 标题中提到的"XML通过SAX解析为JSON格式"是指使用SAX解析器来读取XML文档,并将其转换成...
4. **解析与操作**:解析XML文件通常需要专门的解析器,如DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。DOM将整个XML文件加载到内存,适合小文件;SAX和StAX是事件...
### Kettle与JSON解析概述 #### 1. **Kettle简介** - Kettle(Pentaho Data Integration,简称PDI)是一款开源的数据集成工具,广泛用于ETL(Extract-Transform-Load)任务。 - Kettle支持多种数据源,包括关系型...
它们提供了一种简洁的接口,使得XML和JSON的解析与网络请求紧密结合,大大简化了开发流程。 使用"AFNetworking+XMLParser",你可以创建一个请求操作并指定其解析XML的回调,这样当请求完成时,解析出的XML数据会...
在Java开发中,XML(可扩展标记语言)和JSON...在`XmlToJson.java`这个工具类中,我们展示了如何利用Jackson库进行XML与JSON之间的转换。这只是一个基础示例,实际项目中可能需要进行更复杂的错误处理和数据验证。
json xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demo
在VB.NET中,可以使用内置的System.Web.Script.Serialization命名空间中的JavaScriptSerializer类来解析Json。以下是一个简单的步骤: 1. 引入命名空间: ```vb Imports System.Web.Script.Serialization ``` 2...
在Android中,JSON解析主要分为两个过程:解析(将JSON字符串转化为Java对象)和序列化(将Java对象转化为JSON字符串)。 1. **解析JSON** - `org.json`库:Android SDK内置了`org.json`库,提供了`JSONObject`和`...
本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。