XML简介
XML是可扩展标记语言。可以计算机语言与语言之间进行交流。
特点:1、xml具有平台无关性,是一门独立的标记语言
2、xml具有自我描述性
XML语法
1、 XML 文档声明 <?xml version="1.0" encoding="utf-8"?> 2、 标记(元素 / 标签 / 节点) xml文档,又一个个的标记组成。 语法: 开始标记(开放标记):<标记名称> 结束标记(闭合标记):</标记名称> 标记名称:自定义名称,必须遵循一下命名规则: 1、名称可以含字母、数字以及其他的字符 2、名称不能以数字或这标点符号开始 3、名称不能以字符"xml"(或者MXL、Xml)开始 4、名称不能包含空格,不能包含冒号( :) 5、名称要区分大小写 标记内容:开始标记与结束标记之间,是标记的内容。 比如<name>张三</name> <name>李四</name> 3、一个XML文档中,必须有且且仅有允许又一个根标记。 正例: <names> <name>张三</name> <name>李四</name> </names> 反例: <name>张三</name> <name>李四</name> 4、标记可以嵌套,但不能交叉。 正例: <person> <name>盘古</name> <age>千大数</age> </person> 反例: <person> <name>鸿蒙<age></name> 百大数</age> </person> 5、标记的层次称呼(子标记,父标记,兄弟标记,后代标记,祖先标记) 例如: <persons> <person> <name>女娲</name> <age>十大数</age> </person> <person> <name>东皇太一</name> <age>十大数</age> </person> </persons> name是person的子标记,也是person的后代标记 name是persons的后代标记 name是age的兄弟标记 person是name父标记 persons是name的先祖标记 6、标记名称 允许重复 * 7、标记除了开始和结束,还要属性。 标记中的属性,在标记开始时描述,由属性名称和属性值组成 格式: 在开始标记中描述属性。 可以包含0~n 个属性,每一个属性是一个键值对! 属性名称不能重复 ,键 与 值之间使用等号连接,多个属性之间使用空格分割 属性值必须被引号引住。 案例: <persons> <person id="1000032" groupid="1"> <name>天波旬</name> <age>千无量大海</age> </person> <person> <name>欲色天</name> <age>千无量大海</age> </person> </persons> 8、注释: 注释不能写在文档声明前 注释不能嵌套注释 格式: 注释开始 <!-- 注释结束 --> 语法进阶CDATA CDATA是不应该由XML解析器解析的文本数据 像 "<" 和 "&" 字符在XML元素中都是非法的 "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。 "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。 某些文本,比如 JavaScript 代码,包含大量 "<" 和 "&" 字符。为了避免错误, 可以将脚本代码定义CDATA。 CDATA部分中的所以内容都会被解析器忽略。 CDATA部分开始: <![CDATA[ 结束: ]]> <name><![CDATA[哈<a></a>哈></name>
XML解析
文档对象Document
指的是加载导内存导整个文档
常用方法:
1、通过文档对象,获取XML文档中的根元素对象。
Element root = doc.getRootElement();
2、添加根节点
Element root = doc.addElement("根节点名称");
元素对象 Element
指的是XML文档中的单个节点
常用方法:
1、获取节点名称
String getName();
2、获取节点内容
String getText();
3、设置节点内容
String setText();
4、根据节点的名称,获取匹配名称的第一个子节点对象
Element element(String 子节点名称);
5、获取所以子节点对象
List<Element> element();
6、获取节点的属性值
String attributevalue(String 属性名称);
7、获取子节点的内容
String elementText(String 子节点名称);
8、添加子节点
Element addElement(String 子节点名称);
9、添加属性
Element setAttribute(String 属性名称,String 属性值);
通过java生成XML
步骤 1、通过文档帮助器(DocumentHelper),创建空的文档对象 Document doc = DocumentHelper.createDocument(); 2、通过文档对象,向其中添加根节点 Element books = doc.addElement("根节点名称"); 3、通过根节点对象root ,丰富子节点 Element book = books.addElement("子节点名称"); 4、创建一个文件输出流,用于存储XML文件 FileOutputStream fos = new FileOutputStream("要存储的位置,路径"); 5、将文件输出流,转化为XML文档输出流 XMLWriter xw = new XMLWriter(fos); 6、写出文档 xw.write(doc); 7、释放资源 xw.close();
根据对象,获取内容生成XML文件
1、创建需要获取的对象、类 Person p = new Person(); 2、设置节点的内容 p.setName("大梵天"); p.setAge(千无量大海); //XStream使用 3、创建XStream对象 XStream x = new XStream(); 4、修改某个类型生成的根节点(可选的,默认为包明。类名) x.alias("person",Person.class); 5、 传入对象, 开始生成 String xml = x.toXML(p); System.out.println(xml); }
JSON简介
JavaScript object Notation JS对象简谱 ,是一种轻量级的数据交换格式。
格式要求:一个对象,由一个打括号表示。括号中 描述对象的属性与函数.通过键值对来描述对象的属性与函数 (可以理解为,打括号中,包含的是一个个的键值对。) 格式: 键与值之间使用冒号连接,多个键值对之间使用逗号分隔。 键值对的键 应该使用引号 引住(通常Java解析时,键不实用引号会报错,而JS能正常解析) 键值对的值 可以是JS中的任意类型的数据 数组格式: 中JSON格式中可以与对象相互嵌套 [元素1、元素2、……]
GSON解析:
将对象(java)转换为 GSON 字符串 在需要转换JSON字符串的位置编写代码: String json = new Gson().toJson(需要转换的对象); 如: book b = BookDao.find(); String json = new Gson.toJson(b); System.out.println(json)
将GSON字符串转换为对象(Java) 需要在转换Java对象的位置编写代码: 对象 = new Gson().fromJson(JSON字符串,对象类型.class); 如: String json = {"id":"100","name":"文章","info":"内容"} Book book = new Gson().fromJson(json,Book.class); System.out.println(book);
使用HashMap将GSON中的数组转换为对象(Java) List 数组元素键名称 = (List) data.get("数组元素键名称"); for (int i = 0; i < 数组元素键名称.size(); i++) { System.out.print(数组元素键名称.get(i)+","); }
Fast Json解析:
Java转换为 fastjson 字符串
String json = JSON.toJSONString(对象);
System.out.println(json);
将fastjson 字符串转换Java
Book book = JSON.parseObject("fastjson字符串", Book.class); System.out.println(book); System.out.println(book.getName());
将fastjson的数组格式转换Java
List<String> s = JSON.parseArray("[\"元素1",\"元素2",\"元素3"]", String.class); System.out.println(s.get(元素坐标));