`

XML解析与JSON解析

    博客分类:
  • java
阅读更多

         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解析和json解析demo"中,我们将探讨如何在iOS应用中处理这两种数据格式。 首先,我们来看XML解析。在iOS中,有两种主要的XML解析方式:NSXMLParser和XMLParser。NSXMLParser是基于事件驱动的解析器,...

    仅依赖jdk把xml解析为json(多层解析)

    仅依赖jdk把xml解析为json,支持多层xml转为json字符串

    xml解析和json解析.zip

    本资料包包含`dom4j`和`fastjson`两个库,分别用于处理XML和JSON解析。 1. **DOM4J**: DOM4J是一个Java库,它提供了全面和强大的XML处理功能。DOM(Document Object Model)是W3C推荐的一种解析XML的标准模型,...

    java解析xml生成json对象

    这个方法可能接受XML文件的路径作为参数,然后使用选择的XML解析器(如DOM或SAX)读取文件,接着使用JSON库将解析出的XML数据转化为JSON对象。 4. **使用示例**:在测试类中,创建一个测试方法调用工具类的方法,...

    okHttp访问返回JSON,XML解析实例

    JSON解析可以借助Gson库,XML解析可以使用`XmlPullParser`或第三方库。在WebView中加载服务器返回的HTML内容,可以利用`loadData`或`loadDataWithBaseURL`方法。这些技术在Android开发中至关重要,能有效提升应用的...

    MusicXML 解析与布局

    MusicXML是一种开放标准的音乐符号交换格式,它允许数字音乐...总之,"MusicXML解析与布局"项目涵盖了XML解析、数据结构设计、图形渲染、音乐理论等多个方面的知识,对于深入理解音乐和计算机科学的结合具有重要意义。

    Unity3D-XML与JSON解析

    融合了XML与JSON的合成与解析(包括创建、更新、添加、删除、显示等操作)

    xml完美解析成json 亲测可用

    一直苦恼xml转json,很多工具类支持,但是转换的效果都很差,一个偶然的时间,我找到这个资源,分享给大家,解析效果相当不错。 使用方法: //将xml转为json JSONObject xmlJSONObj = XML.toJSONObject(ret);

    xmljson解析客户端

    1. 解析XML:使用XML解析器(如Java的DOM解析器,Python的ElementTree等)将XML字符串转换为DOM树或类似的结构。 2. 转换结构:遍历DOM树,将元素和属性映射到JSON键值对。 3. 序列化JSON:将转换后的结构转换为JSON...

    xml转json包与教程

    5. **安全与最佳实践**:在处理XML到JSON的转换时,应注意防止XXE(XML External Entity)攻击,这是一种利用XML解析器漏洞获取服务器敏感信息的攻击方式。确保使用安全配置的XML解析器,并避免解析不受信任的XML...

    AFNetworking下的XML和JSON解析

    本篇文章将深入探讨AFNetworking如何进行XML和JSON解析,并将解析结果转化为字典格式。 首先,我们来看XML解析。XML(eXtensible Markup Language)是一种标记语言,用于描述数据结构,常用于服务器与客户端之间的...

    kettle解析json串

    ### Kettle与JSON解析概述 #### 1. **Kettle简介** - Kettle(Pentaho Data Integration,简称PDI)是一款开源的数据集成工具,广泛用于ETL(Extract-Transform-Load)任务。 - Kettle支持多种数据源,包括关系型...

    XML通过sax解析JSON格式

    SAX(Simple API for XML)是一种基于事件驱动的XML解析器,适用于处理大型XML文档,因为它不会将整个文档加载到内存中。 标题中提到的"XML通过SAX解析为JSON格式"是指使用SAX解析器来读取XML文档,并将其转换成...

    Json和XML解析demo

    4. **解析与操作**:解析XML文件通常需要专门的解析器,如DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。DOM将整个XML文件加载到内存,适合小文件;SAX和StAX是事件...

    IOS的进行xml解析和json解析要用的一个很好的类库

    它们提供了一种简洁的接口,使得XML和JSON的解析与网络请求紧密结合,大大简化了开发流程。 使用"AFNetworking+XMLParser",你可以创建一个请求操作并指定其解析XML的回调,这样当请求完成时,解析出的XML数据会...

    java的xml和json相互转换工具类,亲测直接用

    在Java开发中,XML(可扩展标记语言)和JSON...在`XmlToJson.java`这个工具类中,我们展示了如何利用Jackson库进行XML与JSON之间的转换。这只是一个基础示例,实际项目中可能需要进行更复杂的错误处理和数据验证。

    json xml 解析demo

    json xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demojson xml 解析demo

    VB解析Json转换为Xml

    在VB.NET中,可以使用内置的System.Web.Script.Serialization命名空间中的JavaScriptSerializer类来解析Json。以下是一个简单的步骤: 1. 引入命名空间: ```vb Imports System.Web.Script.Serialization ``` 2...

    json 解析 xml

    在Android中,JSON解析主要分为两个过程:解析(将JSON字符串转化为Java对象)和序列化(将Java对象转化为JSON字符串)。 1. **解析JSON** - `org.json`库:Android SDK内置了`org.json`库,提供了`JSONObject`和`...

    Xml和Json互转工具类

    本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。

Global site tag (gtag.js) - Google Analytics