JavaWeb基础day01

JavaWeb基础day01,第1张

JavaWeb基础day01 一、XML

XML文件的默认打开方式是浏览器

xml:是可扩展的标记语言 Extensible Markup Language。以一种标签语言与HTML类似
1、xml的作用
  1. 编写配置文件:C3P0编写XML配置文件
  2. 做数据传输
2、有效的XML文档
  1. 必须是格式良好的XML文档
  2. 使用DTD和XSD(XML Schema)定义语义约束
2.1、格式良好的XML
  • 声明信息,用于描述XML的版本和编码方式

  • XML要有且仅有一个根元素。一个元素是一对标签,标签里面是内容

	
		
	

  • XML是大小写敏感的
  • XML是标签成对的,而且要正确嵌套
  • 属性值要使用双引号。
  • 注释的写法
 

【案例1】:描述一下学生的信息



	
		王彤
		Java
		89
	
	
		李佳
		sql
		58
	

二、DTD 1、DTD简介

DTD:文档类型定义 document Type Definition

2、DTD作用
  • 约束XML文档格式,保证XML是一个有效的XML文档
3、DTD用法

DTD在使用的时候可以分为两种

  1. 内部DTD
  2. 外部DTD
3.1 内部DTD

假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:


元素声明语法】

【数量词】 限制元素出现的次数

数量词含义+表示出现一次或者多次?出现零次或一次*出现零次或多次,即任意次 【属性声明语法】

属性声明使用下列语法:


【属性类型】:CDATA,表示字符数据(character data)

【默认值】:

  • #REQUIRED:必须出现
  • #IMPLIED:不是必须的



【格式良好的DTD约束的XML文档】

【案例1】:描述一下学生的信息使用DTD约束


 

	
	
	
	 
	 
	 
]>

	
		王彤
		Java
		89
	
	
		李佳
		sql
		58
	
	
		张三
		html
		88
	

3.2 外部DTD

创建一个独立的DTD文件





	
 
 
 

在XML文件中引入DTD文件


 


	
		王彤
		Java
		89
	
	
		李佳
		sql
		58
	

三、约束和验证XML 1、XSD
  • XSD
    • XML Schema是DTD的替代者
    • 不仅可以定义XML文档的结构, 还可以规范文档的内容
    • XSD本身也是XML文档,
    • XSD采用XML文档来定义语义约束,比DTD要复杂一-些,但是功能强大的多。
      • 支持丰富的数据类型
      • 允许开发者自定义数据类型
      • 可读性强
      • 可针对未来需求进行扩展
2、XML解析技术

对XML文件的 *** 作,包括创建XML,对XML文件的增删改查 *** 作

2.1常见的XML解析技术有哪些? 2.1.1 DOM解析

基于XML树结构,耗费资源。是官方提供的解析方式

2.1.2 SAX解析

是民间的解析方式,SAX是基于事件的解析方式,消耗的资源少。数据量大的时候适用

以上两种都是原生的解析方式,代码量巨大

2.1.3 JDOM解析

第三方提供的解析,开源,免费的解析方式,效率比DOM解析快

2.1.4 DOM4J接口**

第三方提供的解析,开源,免费的解析方式,是JDOM的升级版

2.2 使用DOM4J解析XML

解析XML入口是一个对象,是需要先拿到一个document对象

2.2.1读取XML文档中的信息
  1. 导包:dom4j.jar
  2. 编写代码测试【如下】
public class Test {
	public static void main(String[] args) {
		//[1]创建SAX对象,用于读取XML文件
		SAXReader reader = new SAXReader();
		document doc = null;
		try {
			// [2]读取xml文件,找到document对象
			doc = reader.read(new File("src"+File.separator+"com"+File.separator+"wei"+File.separator+"xml"+File.separator+"Student2.xml"));
			//[3]获取根元素 getRootElement
			Element root = doc.getRootElement();
			//System.out.println("根元素:"+root.getName());
            
			//[4 iterator]迭代器迭代更元素下的所有元素
			Iterator it = root.elementIterator();
			while (it.hasNext()) {
				Element element = (Element) it.next();
				//System.out.println(element.getName());
                
				//[5]取属性  Iterator attributes = element.attributeIterator(); 多个属性迭代继续
				Attribute id = element.attribute("id");
				//System.out.println(id.getName()+"="+id.getValue());
                
				//[6]获取子元素
				
                //[7]打印输出
				System.out.println("id="+element.attribute("id").getName()+"-----"+"value="+element.attribute("id").getText());
				System.out.println("name="+element.element("name").getName()+"-----"+"value="+element.element("name").getText());
				System.out.println("score="+element.element("score").getName()+"-----"+"value="+element.element("score").getText());
				System.out.println("course="+element.element("course").getName()+"-----"+"value="+element.element("course").getText());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
2.2.2 使用dom4j生成XML文件
public class Test2 {
	public static void main(String[] args) {
		// [1] 通过documenthelper创建一个documnet对象
		document doc = documentHelper.createdocument();
		// [2] 写一个Xml文件,添加一个根元素,并得到根元素
		Element root = doc.addElement("books");
		// [3] 为根元素添加元素
		Element book = root.addElement("book");
		// [4] 为元素添加属性 方便链式编程
		book.addAttribute("id", "b01");
		// [5] 为book添加在元素
		Element name = book.addElement("name");
		Element author = book.addElement("author");
		Element price = book.addElement("price");
		// [6] 为子元素添加文本信息
		name.addText("Thinking in java");
		author.addText("efcod");
		price.addText("88");
		
		// [7] 将doc输出到XML文件中即可
		Writer writer = null;
		Writer writerFormat = null;
		try {
			writer  = new FileWriter(new File("src"+File.separator+"com"+File.separator+"wei"+File.separator+"dom4j"+File.separator+"book2.xml"));
			writerFormat  = new FileWriter(new File("src"+File.separator+"com"+File.separator+"wei"+File.separator+"dom4j"+File.separator+"bookFormat.xml"));
			doc.write(writer);
			// [8] 格式良好的输出
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter writer2 = new XMLWriter(writerFormat,format);
			writer2.write(doc);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				if (writer!=null) {
					writer.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if (writerFormat!=null) {
					writerFormat.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}		
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存