栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

XML

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML

XML 概述
Extensible Markup Language
可拓展标记语言,是由W3C万维网联盟指定的规范

用途:
	1. 数据存储,小型数据库,存在一定的CRUD操作可行性
	2. 网络端数据的传输
	3. 常见配置文件【重要】

【注意】后期大部分配置文件都是XML格式,数据传输不用XML,使用JSON

XML 和 HTML 之间的差异

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

  • XML 被设计用来传输和存储数据,其焦点是数据的内容。
  • HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

XML 中的标签可自定义

基本语法【重点】
1. XML文件后缀名是.xml
2. XML第一行是对于当前文件的定义声明
3. XML文件中有且只有一个根标签
4. 属性值必须使用引号包含,这里推荐使用双引号
5. 标签必须正确匹配,正确开始和关闭
6. XML标签内严格区分大小写

案例代码




    
        赵四
        18
        男
    
    
        刘能
        19
        男
    
    
        玉田
        20
        男
    

XML 文件约束【了解】
  1. DTD
    一种简单的约束方式
    但是存在一定的约束问题

  2. Schema
    一种复杂XML文件约束方式
    非常严谨

XML 实体引用【重点】

且, 对应&

&
XML 解析【了解】 概述

XML的解析方式分为四种:

1、DOM解析;

2、SAX解析;

3、JDOM解析;

4、DOM4J解析。

其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。这里只说一下最常用并且性能最好的 Dom4j 解析

DOM4J解析 特点

1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

2、它使用接口和抽象基本类方法。

3、具有性能优异、灵活性好、功能强大和极端易用的特点。

4、是一个开放源码的文件,被很多优秀的开源框架所使用

jar 包
dom4j-1.6.1.jar
核心API
// 核心类 SAXReader
class SAXReader {}

// 获取Document对象
Document read(File file);

// 获取指定节点的节点类对象
Element element();

// 获取指定节点所有的节点对象,返回的是一个list
List elements();

// 获取节点名
String getName();

// 获取节点对应的数据
String getText();

案例代码

public class Demo {
    public static void main(String[] args) throws DocumentException {
        // 获取SAXReader对象
        SAXReader reader = new SAXReader();

        // 获取对应的Document对象
        Document document = reader.read(new File("./XML/src/Student.xml"));

        // 获取跟节点对象
        Element rootElement = document.getRootElement();

        // 获取根节点对象的节点名并展示
        System.out.println(rootElement.getName());

        // 获取根节点下的所有子节点对应的List集合
        List elements = rootElement.elements();

        // 遍历获取所有的子节点
        for (Element element : elements) {
            // 展示子节点的节点名以及id属性所对应的值
            System.out.println(element.getName() + ":" + element.attribute("id").getValue());

            // 获取更深一层的子节点
            List list = element.elements();

            // 遍历获取所有的子节点
            for (Element element1 : list) {
                // 拿到子节点的节点名以及对应的数据
                System.out.println(element1.getName() + ":" + element1.getText());
            }
        }
    }
}
JSON 概述

JavaScript Object Notation
(JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯

特点

1、存储和交换文本信息的语法,类似XML

2、轻量级(小、快)

3、可读性强(容易解析)

案例代码

{
    "firstName": "John",
    "lastName": "Smith",
    "sex": "male",
    "age": 25,
    "married": false,
    "address": 
    {
        "streetAddress": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": "10021"
    },
    "phoneNumber": 
    [
        {
          "type": "home",
          "number": "212 555-1234"
        },
        {
          "type": "fax",
          "number": "646 555-4567"
        }
    ]
}
JSON 语法

JSON 的语法基本上可以视为 JavaScript 语法的一个子集,包括以下内容:

  • 数据使用键/值对表示。建议键使用引号引起来!
  • 键/值对使用 ,(逗号)分割。
  • 使用大括号保存对象,每个名称后面跟着一个 ‘:’(冒号)
  • 使用方括号保存数组,数组值使用 ,(逗号)分割。

案例代码

{
    "book": [
        {
            "id":"01",
            "language": "Java",
            "edition": "third",
            "author": "Herbert Schildt"
        },
        {
            "id":"07",
            "language": "C++",
            "edition": "second"
            "author": "E.Balagurusamy"
    }]
}

JSON 支持以下两种数据结构:

  • 键/值对集合: 这一数据结构由不同的编程语言支持。
  • 有序的值列表: 包括数组,列表,向量或序列等等。
数据格式 JSON 值
  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 对象(花括号里)
  • 数组(中括号里)
  • null
数字、字符串、逻辑值

案例代码

{
    "name": "buffer",
	age: 16,
	'gender': true
}
对象

JSON 对象在花括号中书写:

对象可以包含多个键/值对

案例代码

{
    "id":001, 
    "name":"张三", 
    "age":18
}
数组

案例代码

{
    name : ["张三", '李四', '王五'],
    age : ["1", '2', 3],
    info : ['帅']
}
对象数组
  1. 数据使用[]包含
  2. 在[]都是JSON格式对象
  3. 每一个对象之间使用逗号隔开,同时最后一个元素不需要逗号

案例代码1

{
	person1: [
        {
            "name": "张三"
        }, 
        {
            "age": 1
        }, 
        {
            "gender": true
		}
    ],
	person1: [
        {
            "name": "李四"
        }, 
        {
            "age": 2
        }, 
        {
            "gender": true
		}
    ],
	person1: [
        {
            "name": "翠花"
        }, 
        {
            "age": 3
        }, 
        {
            "gender": false
		}
    ]
}

案例代码2

{
	"person1": [
        {
            "name": "张三",
            "age": 13,
            "gender": true
		}
    ],
	"person2": [
        {
            "name": "李四",
            "age": 15,
            "gender": true
        }
    ],
	"person3": [
        {
            "name": "翠花",
            "age": 19,
            "gender": false
        }
    ]
}
JSON数据获取

1、json对象.键名

2、json对象[“键名”]

3、数组对象[下标] -》 对应数组

案例代码一

var person = {"name":"张三"};

var name = person.name;
			
alert(name);

案例代码二

var person = {"name":"张三"};

var name = person["name"];

alert(name);

案例代码三

var persons = {"person" : ["张三", 16, false]};

var name = persons.person[0];

alert(name);

案例代码四

var persons = {
	"person": [{
		"name": "张三"
	}, {
		"age": 16
	}, {
		"gender": false
	}]
};

var name = persons.person[0]["name"];
var age = persons.person[1].age;

alert(name + age);

案例代码五

var person = {
	"name": "玉田",
	"age": 21
};

for (var key in person) {
	alert(key + ":" + person[key]);
}

案例代码六

var persons = [{
	"name": "老七",
	"age": 47,
	"gender": true
}, {
	"name": "永强",
	"age": 23,
	"gender": true
}, {
	"name": "刘英",
	"age": 20,
	"gender": false
}];

for (var i = 0; i < persons.length; i++) {
	var person = persons[i];

	for (var key in person) {
		alert(key + ":" + person[key]);
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号