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
仅依赖jdk把xml解析为json,支持多层xml转为json字符串
苹果自带的XML解析与JSON序列化类的使用。
dom4j和fastjson jar包,用于xml文件的解析和json文件的解析
融合了XML与JSON的合成与解析(包括创建、更新、添加、删除、显示等操作)
一直苦恼xml转json,很多工具类支持,但是转换的效果都很差,一个偶然的时间,我找到这个资源,分享给大家,解析效果相当不错。 使用方法: //将xml转为json JSONObject xmlJSONObj = XML.toJSONObject(ret);
android json与xml解析 例子 demo 包含Json和xml解析 其中json包括解析带数组的和不带数组的; xml包括DOM解析和SAX解析
一个第三方类库,主要负责IOS中的xml解析和JSON解析
json xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demo
实现了XML解析、JSON解析,完成后均归纳为字典格式的数据
JSONUtils 实现了json结构数据的生成与解析,json与 xml之间相互转换
本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。
java解析xml文件生成json对象,方便操作,下载后导入eclipse,加入相关的jar包后加载至类路径便可测试该工具类,很好用!!!
VB解析Json转换为Xml。内有详细使用代码例子
java&android;解析xml 将xml转换为json java&android;解析xml 将xml转换为json 原文地址:https://blog.csdn.net/u010838785/article/details/82258411
音乐描述文件MusicXML 的解析器与布局器,C++语言。
WebView布局使用,okHTTP访问解析服务器返回的json/xml数据。
XML通过SAX解析为JSON格式的文档 例子中的类稍微修改可以做做到公用
xmljson解析客户端,见下文 http://blog.csdn.net/uaecho/article/details/17887597
json 解析 xml android 网络 互动