Java Web学习笔记(四)——xml基础

xml是可扩展标记语言,非常灵活,没有固定的标签,所有的标签都可以自定义。xml通常用于信息的记录和传递,经常被用于充当配置文件。

xml的格式

1.  声明信息,用于描述xml的版本和编码方式

2.  xml有且仅有一个根元素(元素由开始标签、元素内容和结束标签组成)

3.  xml是大小写敏感的

4.  标签是成对出现的,并且要正确嵌套

5.  属性值要使用双引号

6.  注释的写法

DTD(文档类型定义)

DTD用于约束xml的文档格式,保证xml是一个有效的xml文件。

DTD可以分为内部DTD和外部DTD。内部DTD是指所有代码写在xml内部。外部DTD则是独立的。

使用DTD

  • 内部DTD

语法        

元素声明语法

数量词

+ 出现至少一次
出现0次或1次
* 出现任意次

属性声明语法

属性类型:CDATA表示字符数据

默认值:

  - #REQUIRED: 表示必须出现

  - #IMPLIED: 表示不是必须的

带DTD的完整xml代码:




	
	
	
	
	
]>

	
		Tom
		Java
		89
	
	
		Rob
		MYSQL
		58
	
  • 外部DTD

创建一个独立的DTD文件

Java Web学习笔记(四)——xml基础_第1张图片







在xml中引入外部dtd文件





	
		Tom
		Java
		89
	
	
		Rob
		Python
		58
	

xml解析技术

xml解析就是对xml文件进行操作,包括创建xml和对xml文件进行增、删、改、查操作。

常见的xml解析技术

  • DOM解析

DOM解析是官方提供的解析方式,它的特点是基于xml树结构,但是比较耗资源,适用于多次访问xml。

  • SAX解析

SAX解析基于事件,代码多,写起来麻烦。

  • JDOM解析

JDOM解析是由第三方提供,开源免费的解析方式,比DOM解析要快。

  • DOM4J解析

DOM4J解析是第三方提供的开源免费的解析方式,是JDOM的升级版,使用接口而不是实现类。使用较广。

DOM4J解析xml

解析xml文件的入口是需要先拿到一个Document对象。

读取xml文件中的信息

导入dom4j的jar包(https://dom4j.github.io/#)

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Try {

	public static void main(String[] args) throws DocumentException {
		// TODO Auto-generated method stub
		//创建SAXReader对象,用于读取xml文件
		SAXReader reader = new SAXReader();
		//读取xml文件,得到Document文件
		Document doc = reader.read(new File("src/scores.xml"));
		//获取根元素
		Element root = doc.getRootElement();
		//获取根元素下的所有子元素
		Iterator it = root.elementIterator();
		while(it.hasNext())
		{
			//取出元素
			Element e = (Element) it.next();
			System.out.println(e.getName());
			//获取id属性
			Attribute id = e.attribute("id");
			System.out.println(id.getName()+"="+id.getValue());
			//获取student的子元素
			Element name = e.element("name");
			Element course = e.element("course");
			Element score = e.element("score");
			System.out.println(name.getName()+"="+name.getStringValue());
			System.out.println(course.getName()+"="+course.getText());
			System.out.println(score.getName()+"="+score.getText());
			System.out.println("****************");
		}
	}

}

用dom4j创建xml

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Testsml {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//通过DocumentHelper生成一个Document对象
		Document doc = DocumentHelper.createDocument();
		//doc.addElement("books").addElement(book).addAttribute("id","b01");
		//添加并得到根元素
		Element root = doc.addElement("books");
		//为根元素添加子元素
		Element book = root.addElement("book");
		//为book元素添加属性,链式编程
		book.addAttribute("id", "b01");
		//为book添加子元素
		Element name = book.addElement("name");
		Element author = book.addElement("author");
		Element price = book.addElement("price");
		//为子元素添加文本信息
		name.addText("Thinking in Java");
		author.addText("Tom");
		price.addText("77");
		/*//将doc输出到xml文件中
		Writer writer = new FileWriter(new File("src/books.xml"));
		doc.write(writer);
		//关闭资源
		writer.close();*/
		//格式良好的输出
		OutputFormat format = OutputFormat.createPrettyPrint();
		XMLWriter writer = new XMLWriter(new FileWriter(new File("src/books.xml")),format);
		writer.write(doc);
		//关闭资源
		writer.close();
	}

}

 

你可能感兴趣的:(javaWeb)