XML、JSON
XML
说明:
可扩张展标记语言,关注数据本身
作用:
1、描述数据,存储数据、传输数据
2、配置文件(web项目的web.xml文件、sping框架的sping.xml等)
要求:
文档的后缀名为.XML
文档有且只有一个根元素,根元素就是包含其他所有元素的元素
XML目前的版本只有1.0
语法规范:
1、XML声明
<?XML version="1.0" encoding="UTF-8"?>
<? 表示文档的开始
XML 表示文档为XML
?> 表示文档的结束
version 表示XML的版本
encoding 表示编码格式
standalone 表示文档是否独立
注:文档的声明必选写在首行,顶格写
2、有且只有一个根元素
3、严格区分大小写
4、属性值用引号:属性名="属性值",在一个标签中,不能出现相同属性
5、标签成对出现
6、空标签要关闭
7、元素正确嵌套
元素命名规则
1、可以字母、数字或其他可见字符
2、不能以数字开头
3、不能以XML开头
4、不能有空格
5、不能有冒号
实体:
实体叫:ENTITY,
作用:避免重复输入
1)、内置的5种实体
实体 符号
$lt; <
$gt; >
$amp; &
$quotl; "
$apos; '
2)、自定义实体
<!DOCTYPE 根元素[
<!ENTITY 实体名 "实体内容">
]>
3)、使用实体
&实体名;
文档
声明:文档类型定义——DOCTYPE,文档类型声明,紧跟 XML 声明之后,包含所有实体声明
构成:
1、元素
2、属性
3、实体
4、PCDATA
<!DOCTYPE[...]>
5、CDATA
<![CDATA[...]]>
DOM 解析过程
① 建 立 DocumentBuilderFactory : DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
② 建立 DocumentBuilder: DocumentBuilder builder = factory.newDocumentBuilder();
③ 建立 Document : Document doc = builder.parse(“要解析的文件路径”);
④ 建立 NodeList : NodeList nl = doc.getElementsByTagName(“读取节点”);
⑤ 进行 XML 信息读取
DOM4J解析
1、得到要解析文件对象 file对象
2、得到解析器
3、通过解析器将file文件解析成Document对象
4、得到文档对象的根元素对象 Element对象
5、根元素对象的所有子节点,返回迭代器
6、遍历迭代器,得到元素名称和文本
JSON
格式:
1、 构建结构:
1)、对象:"名称/值"对的集合 {"key":"value"}
2)、数组:值得有序列表 [{"key":"value"},{"key":"value"}]
2、具体形式
1)、Json 以key-value 的形式存储数据
2)、Key 的取值为String 类型;
3)、Value 的取值为String,boolean,Number,数组,Object,null;
4)、Json串以{开始,以}结尾;
5)、Json 串中数组是以[开始,以]结尾;
6)、Json 串中Object是以{开始,以}结尾;
Gson
单元测试类
创建单元测试类
1、选择src,右键,选择Other
2、搜索"test",选择"JUnit Test Case"
3、设置包名和类名(和创建普通Java类一样)
注意点:
1、不能有父类
2、不能是静态方法
3、不能有参数
4、返回是void
5、要在方法上加注解 @Test
6、如果执行成功,返回绿色;如果执行失败,返回暗红色
如何运行:
1、点击方法名,右键选择Run As或Debug As,选择"JUnit Test"执行
2、点击类中任意空白,此时会执行所有单元测试方法
Gson解析步骤:
1、创建对象
2、创建Gson对象
Gson 变量名=new Gson();
3、使用toJson()方法获得值
Json 节点解析
1、获得解析器
语法:JsonParser parser= newJsonParser();
2、获得根节点元素
语法:JsonElement element= parser.parse(对象);
3、根据文档判断根节点属于什么类型的Gson 节点对象
语法:JsonObject root= element.getAsJsonObject();
4、取得节点下的某个节点的value
语法:JsonPrimitive flagJson= root.getAsJsonPrimitive("节点的值")