提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
XML和JSON的学习笔记
提示:以下是本篇文章正文内容,下面案例可供参考
一、XML
XML 是 可扩展标记语言,具有平台无关性和自我描述性。
平台无关性:
a. 任何系统打开的效果一样(系统平台无关性)
b. 任何语言解析的效果一样(语言平台无关性)
XML 的语法格式:
- 首先需要声明此文档是XML文档:
<?xml version="1.0" encoding="UTF-8"?>
- XML文档是由标记组成的: 开始标记:
<name>
, 结束标记:</name>
标记名称命名格式与Java命名差不多。 - XML只允许有一个根标记,即要有一个标记里面包含所有的标记(除根标记外)
- 标记可以嵌套,但不允许交叉
- 子父标记,兄弟标记,后代祖先标记
- 标记名称可重复
- 标记可以有属性,示例:
<name id="1"></name>
- 注释规则:
a. 不能在文档声明前并不能嵌套
b. 注释开始:<!--
注释结束:-->
XML的示例:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1">
<name>apple</name>
<info>Big Apple</info>
</book>
<book id="1">
<name>orange</name>
<info>Big Orange</info>
</book>
</books>
Java 中解析XML的方式:
- SAX解析:逐行解析整个文档,无法一下子逐行整个文档。单向解析,无法同时访问同一文档的不同部分数据。只读解析方式,无法修改文档。
- DOM解析:文档在内容中加载,允许修改文档。访问是双向的,双向解析数据。但文档全部加载在内存中,资源消耗会比SAX大。但是XML的大小可以忽略此缺点不计。
- JDOM解析:使用了Java集合类,较为方便
- DOM4J解析:更加方便,并且很多Java软件使用DOM4J读写XML
SAX本地解析示例:
public class XmlParse {
public static void main(String[] args) throws IOException, DocumentException {
//1. 获取输入流
FileInputStream fis = new FileInputStream("d://Demo.xml");
//2. 创建XML读取对象
SAXReader sr = new SAXReader();
//3. 读取并得到文档对象
Document doc = sr.read(fis);
//4. 获取根元素
Element root = doc.getRootElement();
System.out.println(root.getName());
//转换为list并遍历
List<Element> es = root.elements();
for(int i=0; i<es.size(); i++){
Element book = es.get(i);
System.out.println(book.attribute("id"));
System.out.println(book