Xml知识总结

Xml(eXtendsible markup language)可扩展的标记语言
作用:
1.用来保存数据(少量)
2.配置文件
3.数据传输载体(和json作用一样)

代码示例:
stus.xml



	
	  a
	18
	
	
	 b
	 28
	

结构分析:
Xml知识总结_第1张图片
Xml知识总结_第2张图片
Xml知识总结_第3张图片

standalone : no - 该文档会依赖关联其他文档 , yes-- 这是一个独立的文档

默认文件保存的时候,使用的是GBK的编码保存
为了通用,建议使用UTF-8编码保存,以及encoding 都是 utf-8

XML 命名规则
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
命名尽量简单,做到见名知义

非法字符:
严格地讲,在 XML 中仅有字符 “<“和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
< <
& &
如果某段字符串里面有过多的字符, 并且里面包含了类似标签或者关键字的这种文字,不想让xml的解析器去解析。 那么可以使用CDATA
不过CDATA 一般比较少看到。 通常在服务器给客户端返回数据的时候。

XML 解析:
就是获取元素里面的字符数据或者属性数据。
主要方式有两种:1.DOM 2.SAX
使用比较广泛的API是dom4j
Dom4j 基本用法:
element.element(“stu”) : 返回该元素下的第一个stu元素
element.elements(); 返回该元素下的所有子元素。
SAX用法:

  1. 创建SaxReader对象
  2. 指定解析的xml
  3. 获取根元素。
  4. 根据根元素获取子元素或者下面的子孙元素
try {
			//1. 创建sax读取对象
			SAXReader reader = new SAXReader(); //jdbc -- classloader
			//2. 指定解析的xml源
			Document  document  = reader.read(new File("src/xml/stus.xml"));
			//3. 得到元素、
			//得到根元素
			Element rootElement= document.getRootElement();
			//获取根元素下面的子元素 age
		    //rootElement.element("age") 
			//System.out.println(rootElement.element("stu").element("age").getText());
			//获取根元素下面的所有子元素 。 stu元素
			List elements = rootElement.elements();
			//遍历所有的stu元素
			for (Element element : elements) {
				//获取stu元素下面的name元素
				String name = element.element("name").getText();
				String age = element.element("age").getText();
				String address = element.element("address").getText();
				System.out.println("name="+name+"==age+"+age+"==address="+address);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

Dom4j 的 Xpath使用:
dom4j里面支持Xpath的写法。 xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。

  1. 添加jar包依赖
    jaxen-1.1-beta-6.jar
  2. 在查找指定节点的时候,根据XPath语法规则来查找
  3. 后续的代码与以前的解析代码一样。
//要想使用Xpath, 还得添加支持的jar 获取的是第一个 只返回一个。 
			Element nameElement = (Element) rootElement.selectSingleNode("//name");
			System.out.println(nameElement.getText());
			System.out.println("----------------");
			//获取文档里面的所有name元素 
			List list = rootElement.selectNodes("//name");
			for (Element element : list) {
				System.out.println(element.getText());
			}

XML 约束:
在element里面加上id来确保唯一性

xml文档里面直接嵌入DTD的约束法则

   : stus 下面有一个元素 stu  , 但是只有一个
		  stu下面有两个元素 name  ,age  顺序必须name-age
		 
		
		 stu有一个属性 文本类型, 该属性可有可无

元素的个数:
+ 一个或多个
* 零个或多个
? 零个或一个
属性的类型定义
CDATA : 属性是普通文字
ID : 属性的值必须唯一
按照顺序来
两个中只能包含一个子元素

Schema
其实就是一个xml , 使用xml的语法规则, xml解析器解析起来比较方便 , 是为了替代DTD 。但是Schema 约束文本内容比DTD的内容还要多。 所以目前也没有真正意义上的替代DTD

一个xml 可以引用多个schema约束。 但是只能引用一个DTD约束。

你可能感兴趣的:(java,web)