一、XML

1、概述:XML全称为Extensible Markup Language, 意思是可扩展的标记语言

2、版本:W3C在1998年2月发布1.0版本;W3C在2004年2月发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用。

3、XML的作用

  a.程序的配置文件(这也是最后大家使用XML最常见的目的);

  b.数据交换:不同语言之间用来交换数据;

  c.小型数据库:用来当数据库存储数据。

4、特点:XML可以自定义元素;

 文档展示:

5、约束:一个XML文档一旦有了约束,那么这个XML文档就只能使用约束中创建的元素及属性。

 xml文档约束有两种类型:dtd和schema

(1)dtd:dtd是平面式文档,dtd文件不是xml文档,通常扩展名为“.dtd”。它是最早的xml约束;

(2)schema:schema本身也是xml文档,它比dtd要更加强大,通常扩展名为“.xsd”。它是新的xml文档约束,用来替代dtd

  DTD定义元素的语法

    使用ELEMENT声明元素:<!ELEMENT 元素名 内容类型内容>

    例如:<!ELEMENT name (#PCDATA)>

    表示name元素的内容为文本数据

6、解析XML

 (1)XML解析方式分为两种:DOM(Document Object Model)和SAX(Simple API for XML)。

 (2)DOM解析器原理

     把整个XML文档装载到一个Document对象中。Document对象包含文档元素,即根元素,根元素包含N多个子元素…

     一个XML文档解析后对应一个Document对象,这说明使用DOM解析XML文档方便使用,因为元素与元素之间还保存着结构关系。

 (3)SAX解析原理

       DOM会一行一行的读取XML文档,最终会把XML文档所有数据存放到Document对象中。

    SAX也是一行一行的读取XML文档,但是当XML文档读取结束后,SAX不会保存任何数据,同时整个解析XML文档的工作也就结束了。(边读边解析)

     但是,SAX在读取一行XML文档数据后,就会给感兴趣的用户一个通知!

       例如当SAX读取到一个元素的开始时,会通知用户当前解析到一个元素的开始标签。而用户可以在整个解析的过程中完成自己的业务逻辑,

     当SAX解析结束,不会保存任何 XML文档的数据。

 (4)Dom4j:DOM4J是针对Java开发人员专门提供的XML文档解析规范

     步骤:

1、加载XML文档:使用DOM4J来加载XML文档,需要先获取SAXReader对象,然后通过SAXReader对象的read()方法来加载XML文档       

  1. SAXReader reader = new SAXReader();
  2. Document document = reader.read("src/students.xml");

2、操作document

3、DOM4J保存Document对象:保存Document对象需要使用XMLWriter对象的write()方法来完成,

   在创建XMLWriter时还可以为其指定XML文档的格式(缩进字符串以及是否换行),这需要使用OutputFormat来指定。      

  1. document.addDocType("students", "", "students.dtd");
  2. OutputFormat format = new OutputFormat("\t", true);
  3. format.setEncoding("UTF-8");
  4. XMLWriter writer =
  5. new XMLWriter(new FileWriter(xmlName), format);
  6. writer.write(document);
  7. writer.close();

二、json

1、概述

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

2、把Java对象转换成JSON对象

 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串。也可以把JavaBean转换成JSON字符串。

3、json-lib中的核心类

  在json-lib中只有两个核心类:

 JSONObject:本身是一个map 

  1. Person person = new Person("liSi", 18, "female");
  2. JSONObject jo = JSONObject.fromObject(person);
  3. System.out.println(jo.toString());

 JSONArray:本身是一个list

  1. Person p1 = new Person("zhangSan", 18, "male");
  2. Person p2 = new Person("liSi", 23, "female");
  3. List<Person> list = new ArrayList<Person>();
  4. list.add(p1);
  5. list.add(p2);
  6.  
  7. JSONArray ja = JSONArray.fromObject(list);
  8. System.out.println(ja.toString());

三、AJAX

1、概述:AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。

2、特点:当服务器响应时,不用刷新整个浏览器页面,而是可以局部刷新。

   应用场景:当我们在百度中输入一个“传”字后,会马上出现一个下拉列表!列表中显示的是包含“传”字的10个关键字。

  

3、实现,get( )方式

(1)创建XMLHttpRequest对象;

(2)调用open()方法打开与服务器的连接;

(3)调用send()方法发送请求;

(4)为XMLHttpRequest对象指定onreadystatechange事件函数,这个函数会在XMLHttpRequest的1、2、3、4,四种状态时被调用;

  XMLHttpRequest对象的5种状态:

    0:初始化未完成状态,只是创建了XMLHttpRequest对象,还未调用open()方法;

    1:请求已开始,open()方法已调用,但还没调用send()方法;

    2:请求发送完成状态,send()方法已调用;

    3:开始读取服务器响应;

    4:读取服务器响应结束。

  通常我们只关心4状态。

  XMLHttpRequest对象的status属性表示服务器状态码,它只有在readyState为4时才能获取到。

  XMLHttpRequest对象的responseText属性表示服务器响应内容,它只有在readyState为4时才能获取到!

get( )方式  

  1. function createXMLHttpRequest() {
  2. var xmlHttp;
  3. // 适用于大多数浏览器,以及IE7和IE更高版本
  4. try{
  5. xmlHttp = new XMLHttpRequest();
  6. } catch (e) {
  7. // 适用于IE6
  8. try {
  9. xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  10. } catch (e) {
  11. // 适用于IE5.5,以及IE更早版本
  12. try{
  13. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  14. } catch (e){}
  15. }
  16. }
  17. return xmlHttp;
  18. }
  19.  
  20. var xmlHttp = createXMLHttpRequest();
  21. xmlHttp.open("GET", "/ajaxdemo1/AServlet", true);
  22.  
  23. xmlHttp.send(null);
  24.  
  25. xmlHttp.onreadystatechange = function() {
  26. if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
  27. alert(xmlHttp.responseText);
  28. }
  29. };

Post请求:模拟注册时场景

POST请求必须设置ContentType请求头的值为application/x-www.form-encoded。表单的enctype默认值就是为application/x-www.form-encoded!因为默认值就是这个,

所以大家可能会忽略这个值!当设置了<form>的enctype=” application/x-www.form-encoded”时,等同与设置了Cotnent-Type请求头。

  1. <script type="text/javascript">
  2. function createXMLHttpRequest() {
  3. try {
  4. return new XMLHttpRequest();
  5. } catch (e) {
  6. try {
  7. return new ActiveXObject("Msxml2.XMLHTTP");
  8. } catch (e) {
  9. return new ActiveXObject("Microsoft.XMLHTTP");
  10. }
  11. }
  12. }
  13.  
  14. function send() {
  15. var xmlHttp = createXMLHttpRequest();
  16. xmlHttp.onreadystatechange = function() {
  17. if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
  18. if(xmlHttp.responseText == "true") {
  19. document.getElementById("error").innerHTML = "用户名已被注册!";
  20. } else {
  21. document.getElementById("error").innerHTML = "";
  22. }
  23. }
  24. };
  25. xmlHttp.open("POST", "/ajaxdemo1/BServlet", true);
  26. xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  27. var username = document.getElementById("username").value;
  28. xmlHttp.send("username=" + username);
  29. }
  30. </script>

  

四、XStream

XStream可以把JavaBean对象转换成XML!

通常服务器向客户端响应的数据都是来自数据库的一组对象,而我们不能直接把对象响应给响应端,所以我们需要把对象转换成XML再响应给客户端,这时就需要使用XStream组合了 

  1. Province p1 = new Province("辽宁省");
  2. p1.addCity(new City("沈阳", "shenyang"));
  3. p1.addCity(new City("大连", "dalian"));
  4.  
  5. Province p2 = new Province("吉林省");
  6. p2.addCity(new City("长春", "changchen"));
  7. p2.addCity(new City("白城", "baicheng"));
  8.  
  9. List<Province> list = new ArrayList<Province>();
  10. list.add(p1);
  11. list.add(p2);
  12.  
  13. XStream xstream = new XStream();
  14. String s = xstream.toXML(list);
  15. System.out.println(s);

   

 

XML,json,ajax的更多相关文章

  1. JSON & Ajax

    Ajax是异步JavaScript和XML是用来在客户端作为一组相互关联的Web开发技术,以创建异步Web应用程序. Ajax模型,Web应用程序可以发送数据和检索数据从一个服务器,而不干扰现有的页面 ...

  2. Xml,Json,Hessian,Protocol Buffers序列化对比

    简介 这篇博客主要对Xml,Json,Hessian,Protocol Buffers的序列化和反序列化性能进行对比,Xml和Json的基本概念就不说了. Hessian:Hessian是一个轻量级的 ...

  3. xml json protobuf

    本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Background xml,json,protobuf都是格式化手段,喜欢哪个,会用哪个,该用哪个,用哪个? 随 ...

  4. iOS开发笔记3:XML/JSON数据解析

    这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSeri ...

  5. Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...

  6. [WEB API] CLIENT 指定请求及回应格式(XML/JSON)

    [Web API] Client 指定请求及响应格式(xml/json) Web API 支持的格式请参考 http://www.asp.net/web-api/overview/formats-an ...

  7. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  8. iOS基础 - XML & JSON

    一.HTML & XML HTML 是用来描述网页的一种语言 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记 ...

  9. php中 xml json 数组 之间相互转换

    php中 xml json  数组 之间相互转换 1 数组转json $result = array( 'status' =>$status, 'message'=>$message, ' ...

随机推荐

  1. C# — Windows服务安装后自动停止问题

    今天在使用VS创建一个Windows服务时,为了得到一些提示,引用了Windows.Forms程序集,然后使用MessageBox.Show()方法渴望得到一些弹窗提示: 但是最后在安装好服务后,在任 ...

  2. linux查询日志常用命令,经常更新

    1.grep命令 grep -c "查询内容" filename    ------c,是小写,可以知道你要查询的内容在这个文件中是否存在 grep -C 10 "查询内 ...

  3. C#中指针使用总结(转载)

    C#为了类型安全,默认并不支持指针.但是也并不是说C#不支持指针,我们可以使用unsafe关键词,开启不安全代码(unsafe code)开发模式.在不安全模式下,我们可以直接操作内存,这样就可以使用 ...

  4. vue2.0实现过滤

    vue1.0和vue2.0差别还是挺多的,之前的vue1.0还有过滤器功能,到了2.0过滤器只能通过自己编写.以下是写的一个小demo: HTML <div id="app" ...

  5. java extends和implements区别

    一.作用说明 extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用 二.补充 JAVA ...

  6. BZOJ 3653: 谈笑风生(离线, 长链剖分, 后缀和)

    题意 给你一颗有 \(n\) 个点并且以 \(1\) 为根的树.共有 \(q\) 次询问,每次询问两个参数 \(p, k\) .询问有多少对点 \((p, a, b)\) 满足 \(p,a,b\) 为 ...

  7. Lua语法基础(二)

    1. 函数 1.1 函数声明 默认为全局 局部函数使用local关键字声明 1.2 参数 ...等同于Python中*args三个点表示可变参数 1.3 获取参数长度的两种方式 (1)将传入的参数.. ...

  8. Kibana登录认证设置

    Kibana从5.5开始不提供认证功能,想用官方的认证,X-Pack,收费滴 . 所以就自己动手吧,用nginx的代理功能了. 1.安装Nginx: [root@ELK /]# yum -y inst ...

  9. go interface接口

    一:接口概要 接口是一种重要的类型,他是一组确定的方法集合. 一个接口变量可以存储任何实现了接口方法的具体值.一个重要的例子就是io.Reader和io.Writer type Reader inte ...

  10. python集合(set)的运算

    1.交集 In [1]: a = {1,2,3,4} In [2]: b = {3,4,5,6} In [3]: a & b Out[3]: {3, 4} In [4]: a.intersec ...