XML 学习笔记

可扩展标记语言

用于数据存储、配置文件、数据传输

一、XML约束(dtd约束)

1、创建一个student.dtd约束文件

<?xml version="1.0" encoding="UTF-8"?>
//名字为student的xml文件下 只能有students的标签
<!ELEMENT student (students*) >  
//students的标签里面必须要有name password标签
<!ELEMENT students (name,password ) >  

//声明标签的类型  #PCDATA代表字符串
<!ELEMENT name (#PCDATA)>
<!ELEMENT password (#PCDATA)>

//ATTLIST代表属性  代表students标签要有number的属性
<!ATTLIST student number ID #REQUIRED>

2、在xml添加约束

<?xml version="1.0" encoding="UTF-8"?>
<!-- 关联dtd约束文件 -->
<!DOCTYPE student SYSTEM "student.dtd">

二、xml解析(DOM4J解析)

读取xml文件内的意思

 第一步 导入包

  用于dom4j所需的包

 用于单元测试用到的包

下载地址:链接:https://pan.baidu.com/s/1j_3R7LxgXhx0BlX0aGh6jw 密码:49o0

第二步:新建books.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书 number= "600">
	<书名>数学</书名>
	<作者>数学作者</作者>
	<出版社>数学出版社</出版社>
	<价格>数学价格</价格>
</书>

<书 number= "100">
	<书名>英语</书名>
	<作者>英语作者</作者>
	<出版社>英语出版社</出版社>
	<价格>英语价格</价格>
</书>

<书 number= "50">
	<书名>语文</书名>
	<作者>语文作者</作者>
	<出版社>语文出版社</出版社>
	<价格>语文价格</价格>
</书>
</书架>

第三步:在java文件中解析books.xml文件

package demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
/**
 *	单元测试:Jinit  (相当于主方法) 需导入junit包
 *	1.单元测试方法的名字都是test开头  
 * @author Administrator
 *
 */
public class demo01 {

	@Test
	public void test01() throws Exception {
		//使用dom4j对books.xml文件进行 sax解析  需要导入dom4j包
		
		//1、创建reader对象
		SAXReader reader = new SAXReader();
		
		//2、读取  读取完返回的是一个文档对象
		Document doc =  reader.read(new FileInputStream("books.xml"));
		
		//3.获取根标签  
		Element root = doc.getRootElement();
		System.out.println("根标签的名字:" + root.getName()); //控制台输出 书架
		
		//4.获取子标签
		List books = root.elements();
			//遍历子标签
		for(Object obj : books) {
			Element book = (Element) obj; //将obj转为Element对象
			System.out.println(book.getName());	//控制台输出: 书
		
			//获取书名
			System.out.println(book.element("书名").getText()); //直接通过名字去获取(获取书名标签内的内容)
			//获取作者
			System.out.println(book.element("作者").getText());
			//获取出版社
			System.out.println(book.element("出版社").getText());
			//获取价格
			System.out.println(book.element("价格").getText());
			
			
			//获取"书"标签下面的属性
			System.out.println("剩余" + book.attributeValue("number") + "本书");
		
		}
		
	}
}

 

三、dom4j的xpath查询(XPATH规则)

专门用于xml文件查询    相当于定义了一种规则

第一步 导入包

在使用XPATH之前 需要导入包

链接:https://pan.baidu.com/s/115qAu52sb_bLEVbjrFVfAA 密码:99e6

第二步 创建解析器

SAXReader reader = new SAXReader();

第三步 解析xml获得Document对象

 Document document = reader.read(url);

实例 进行XPATH操作(xml文件创建完成的前提下)

XPTH规则

//书直接找到全部书名这个节点
/书架/书/作者从跟节点一步一步查找作者节点
..选取当前节点的父节点。
//书/@number获取书节点中的Number属性
@Test
	public void test02() throws Exception {
		SAXReader reader = new SAXReader();  	//创建解析器
		Document doc =  reader.read(new FileInputStream("books.xml"));
		
		//进行XPATH查询
			//查询单个节点
		Node nodee = doc.selectSingleNode("//书名");  //直接找到xml文件下的第一个书名这个节点
		System.out.println(nodee.getText()); 	//输出的内容为"数学"
		
			//查询多个节点
		List nodes = doc.selectNodes("//书名"); 	//直接找到全部书名这个节点
		for(Object obj : nodes) {
			Node node = (Node) obj;	//将obj类型默认转为Node类型
			System.out.println(node.getText());  //获取标签内容
		}
		/* 输出的内容为
		 *  数学
			数学
			英语
			语文*/
				//从跟节点一步一步查找作者节点  用 / 
				//找到第一个作者节点
		Node authorNode = doc.selectSingleNode("/书架/书/作者");
		System.out.println("作者节点" + authorNode.getText());  // 输出内容作者节点数学作者
		
				//找作者节点的父节点
		Node authorfatherNode = authorNode.selectSingleNode("..");
		System.out.println("作结节点的父节点为:" + authorfatherNode.getName()); //书
		
	}






@Test
	public void test03() throws DocumentException {
		// @选取属性的使用
		//1、创建SAXRreader解析器
		SAXReader reader = new SAXReader();
		Document doc  = reader.read("books.xml"); //需要抛出Document异常
		
		//2、获取xml文件内某个节点的属性
		Node node = doc.selectSingleNode("//书/@number");//获取书节点中的Number属性
		//3、类型转换
		Attribute att =(Attribute) node;
		System.out.println(att.getValue());	//输出内容为600(即为第一个书节点下的Number属性值)
	}

四、xml的DOM4J修改节点并保存操作

XMLWriter对象

XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"));
writer.write(doc); //写入



public class demo02 {
	//xml的DOM4J修改节并保存点操作
	@Test
	public void test() throws Exception{
		//1、创建SAXReader解析器
		SAXReader reader = new SAXReader();
		
		//2、解析XML文件 获得Document对象
		Document doc = reader.read("books.xml");
		
		//3、把所有书标签内的number的值改为1000
		List list = doc.selectNodes("//书/@number");
		for(Object obj:list) {
			//对象是不是Attribute类型
			if(obj instanceof Attribute) {
				//获取属性对象
				Attribute att = (Attribute) obj;
				//修改属性值
				att.setValue("1000");
			}
		}
		
		//4、保存修改
		XMLWriter writer = new XMLWriter(new FileOutputStream("books.xml"));
		writer.write(doc); //写入
		writer.close();
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值