IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> XML&JSON -> 正文阅读

[大数据]XML&JSON

XML&JSON
XML简介:
在这里插入图片描述
XML是跨平台的语言,它不需要安装任何环境的语言,
它是所有语言所共有的,单独的语言,并且不是所有语言内部的。
它是让所有语言去和xml交互 。
注意: html前身是xml

<></>(整体)这就是标记(标签)
注意点: 标签可以随便写(自定义不会报错),所以叫可扩展。
==》不像Java 很严格。

< head> </ head >标记语言

注意点: 自定义的标签也不会报错

1.XML定义:
可扩展标记语言(1.标记 2.可扩展)
Extensible Markup Language

2.特点:
1.1 XML于操作系统、开发平台无关
1.2 实现不同系统间的数据交换

3.作用:
1.1 数据交互
1.2 配置应用程序
1.3 Ajax基石(基于XML)

4.文档结构
1.1创建XML
创建一个文档后缀名为xml,
(xml大小写没有严格的区分,Java有)
然后打开,把第一句话写上去,这样才算是xml,不然不是。

1.2查询/编辑(Design/Source)

1.3工程里创建xml
右击—New—other—XML File

注意点:
Java去解析xml的代码,但没有工具。
xml代码只有编译测试,没有运行测试。

1.4内容介绍:

<?xml version="1.0" encoding="UTF-8"?> --》 声明

如下的都是 --》文档元素描述信息(文档结构)

<books>
<books/>
<!--  -->//注释
	<books id="1">
		<author>冰心</author>
		<name>爱情</name>
	</books>
</books>

注意点:
xml在eclipse运行不了 ,有波浪线不代表报错,
只是eclipse认为错,但Java可以。

5.文档标签
一层一层嵌套是父子关系,必须要有父亲(根节点)。

1.1 XML标签
XML文档内容有一系列标签元素组成
<元素名 属性名 = “属性值”>元素内容</元素名>

注意点:
属性值最好需要配值 没有取值 会编译报错 但没事 不算错
和Java不一样,但最好有值,因为可以对应匹配。

空元素:
(常见第二种)

<name> </name>
<name></name> 
<name/>

注意点:
1.属性值用双引号包裹(单引号也可以 但不建议)
2.一个元素可以有多个属性
3.属性值中不能直接包含 <、“、&
4.属性值中不建议使用的字符:‘ 、>

6.XML编写注意事项
1.所有XML元素都必须有结束标签
2.XML标签对大小写敏感
3.XML必须正确的嵌套
4.同级标签以缩进对齐
(没有缩进的话 是不标准的xml但不是错的。)
5.元素名称可以包含字母、数字或其他的字符
6.元素名称不能以数字或者标点符号开始
7.元素名称中不能含空格
(建议 用英文)

7. 转义符

<     &lt;
>     &gt;

给我们看的 并不是真正的大于小于

&quot;
&apos;
&     &amp;

–》 一般是在属性值上使用

<![CDATA[     ]]>  -- 》 一般是在两个标签中间使用   (文本)

8. 案例实现
1.1 案例1:将如下衣服的尺码信息,使用XML文件保存

<?xml version="1.0" encoding="UTF-8"?>
<!-- 将如下衣服的尺码信息,使用XML文件保存 -->
<clothSize>
	<size range="height&lt;165">s</size>
	<size range="165&lt;height&lt;170">M</size>
	<size range="170&lt;height&lt;175">L</size>
	<size range="175&lt;height&lt;180">XL</size>
	<size range="180&lt;height&lt;185">XXL</size>
	<size range="height&gt;185">XXXL</size>
</clothSize>

在这里插入图片描述
1.2 案例2:编写XML表示学生成绩

<?xml version="1.0" encoding="UTF-8"?>
<studentScores>
	<studnent name = "xz" expectedScore = "75" 
actualScore = "80"></studnent>
	<studnent name = "xl" expectedScore = "75" 
actualScore = "88"></studnent>
	<!-- 上面不推荐 下面推荐 -->
	<student>
		<name>xz</name>
		<expectedScore>75</expectedScore>
		<actualScore>80</actualScore>
	</student>
	<student>
		<name>xl</name>
		<expectedScore>75</expectedScore>
		<actualScore>88</actualScore>
	</student>
</studentScores>

在这里插入图片描述
9.解析XML

9.1 DOM
特点: 把文档解析成文档树

9.2 SAX(不常用)

9.3 DOM4J(常用)解析案例
特点: 将DOM解析进行了一次封装

9.3.0常用API

Document接口:定义XML文档

Element接口:定义XML元素

Text接口:定义XML本文节点

Attribute接口:定义XML属性

9.3.1准备环境
(1)前提(准备物料dom4j-1.6.1.jar包)
将工程所有设置配置成utf-8,并导入jar包,并手工创建XML文件
在这里插入图片描述
1.在工程里创建一个lib-Folder
2.从外部导入dom4j-1.6.1.jar包
3.然后右击Build Path- Add to Build Path
生成本工程的一个引用库下的包(外部类库)
在这里插入图片描述
4.创建Dem4jXMLjava文件

9.3.2 加载DOM树

5.写个loadXML方法

/**
	 * 1.加载DOM树
	 */
Document doc = null;// 全局 变量
	public void loadXML() {
		//1.实例化SAXReader对象(读取)
		SAXReader saxReader = new SAXReader();
import org.dom4j.io.SAXReader; 导包
		try {//引入read方法,去读取xml
			doc = saxReader.read("src\\A.xml")
import org.dom4j.Document; 导包	
import org.dom4j.DocumentException; 导包	
			System.out.println(doc);
//测试有没有这个xml
			//加载xml成功,能打印出来,就能加载到我们的工程里
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

结果:
地址.DefaultDocument@1fb3ebeb [Document: name src\A.xml]

6.main方法

public static void main(String[] args) {
		Dem4jXML dem4jXML = new Dem4jXML();
		dem4jXML.loadXML();
//dem4jXML.addXML();
		//dem4jXML.updateXML();
dem4jXML.delete();
dem4jXML.findXML();
	}

题外话: 查看saxReader.read的源码,
需要导包dom4j_src (关联源码),
但有没有这个不影响重要的是jar包。
attach Source – External location – External Folder
在这里插入图片描述
在这里插入图片描述

9.3.3 需求1(显示手机收藏信息)

/**
	 * 2.查询XML
	 */
	public void findXML() {//Dem4jXML特有的Iterator
		//1.调用getRootElement()获取根元素
		Element root = doc.getRootElement();
import org.dom4j.Element;导包
		//2.遍历儿子元素的集合
		Iterator brandInfos = root.elementIterator();
import java.util.Iterator; 导包
		while(brandInfos.hasNext()) {
			//3.获取儿子元素
			Element brandInfo = (Element)brandInfos.next();
			System.out.println(brandInfo.attributeValue("name"));
		(得 儿子元素节点得name属性值)
			//4.遍历孙子元素(获取孙子节点对象)
			Iterator types = brandInfo.elementIterator();
			while(types.hasNext()) {//(获取孙子元素节点)
				Element type = (Element)types.next();
				System.out.println(type.attributeValue("name"));
			}
		}
	}

结果:
华为
Mate50 pro
p50 pro
nova 6
苹果
iphone12 pro

9.3.4 需求2(为手机收藏信息添加新的节点)

/**
	 * 3. 添加节点
	 */
public void addXML() { 
		//1.获取根元素
		Element root = doc.getRootElement();
		//2.添加儿子元素
		Element brandInfo = root.addElement("Brand");
		//3.给儿子元素添加name属性
		brandInfo.addAttribute("name", "三星");
		//4.添加孙子节点
		Element type = brandInfo.addElement("Type");
		//5.给孙子元素添加name属性
		type.addAttribute("name", "note8 pro");
//以上添加节点在xml显示不出来,所以才有了方法saveXML
		//6.保存(数据)到新的xml中
		saveXML("src\\b.xml");//调用saveXML方法
	}

9.3.5 需求3(保存手机收藏信息写出到xml文件)

/**
 * 4.保存到XML
 */
public void saveXML(String path) {
		//1.调用OutputFormat类的createPrettyPrint()
		OutputFormat format = OutputFormat.createPrettyPrint();
//对获取的内容格式化一下 比如输出的 样式 以及字符集
import org.dom4j.io.OutputFormat;   导包
		//2.设置字符集
		format.setEncoding("utf-8");
		//3.创建输出对象
		XMLWriter writer = null;
import org.dom4j.io.XMLWriter; 导包 
		//4.调用对象
		try {
			writer = new XMLWriter(new FileWriter(path),format);
 //字节输出流   设置字符集
//XMLWriter 依赖于 FileWriter写出的 本身没有自己的写出方法

//第二个 format一样的解释 XMLWriter  没有自己的格式化方法
import java.io.FileWriter; 导包
		//5.输出给文件(写出数据)
			writer.write(doc);		
import java.io.IOException; 导包	
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
		//6.关闭writer流对象
				writer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

注意点:
1.要刷新(在工程下) Refalsh
2.最好全是UTF-8 或者GBK,要统一(xml文件和工程),不然会有乱码
3.java机制 先编译后运行

9.3.5 需求4(修改手机收藏信息节点)

/**
* 5.修改XML(修改要把增加屏蔽掉)
 */
	public void updateXML() {
		//1.获取根元素
		Element root = doc.getRootElement();
		//2.获取儿子元素的集合
		Iterator brandInfos = root.elementIterator();
		//3.定义变量id
		int id = 0;
		//4.循环遍历儿子元素集合
		while(brandInfos.hasNext()){
			Element brand = (Element)brandInfos.next();
			id++;
			brand.addAttribute("id", id+"");
		}
		saveXML("src\\c.xml");
	}

9.3.6 需求5(删除品牌为“苹果”的手机)

/**
* 删除节点(屏蔽掉添加和修改)
*/
	public void delete() {
		//1.获取根元素
		Element root = doc.getRootElement();
		//2.获取儿子元素的集合
		Iterator brandInfos =root.elementIterator();
		//3.遍历儿子元素集合
		while(brandInfos.hasNext()) {
			//4.获取儿子元素
			Element brand = (Element)brandInfos.next();
			if(brand.attributeValue("name").equals("苹果")) {
				brand.getParent().remove(brand);
			}//getParent() 获取父节点
			// 判断儿子节点的名称是苹果,则删除对应的父子节点
		}
		saveXML("src\\d.xml");//刷新本工程才能出来
	}

题外话
mysql -uroot -pok
-u的含义是 ----->user用户的意思
使用root超级用户管理员的身份
-p的含义是-------->password的意思
使用ok作为本机mysql数据库的密码
在这里插入图片描述
虚拟机
mysql -h 虚拟机的ip地址 -uroot -pok

----2021.8.31&9.01&9.02

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 11:59:18  更:2021-09-03 12:01:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:37:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码