简单学习了XML,做好相关记录以便以后回看。
目录
2.生成XML文件时要指定编码格式并关闭资源,否则会造成乱码,或者生成不了XML文件。
XML介绍:
XML作用
用来传输和存储数据。
XML结构
树结构
<?xml version="1.0" encoding ="UTF-8"?> <!--xml的版本和编码格式-->
<!--DTD规定xml的内容-->
<!DOCTYPE students SYSTEM "students.dtd">
<students> <!-- 根元素有且只有一个 -->
<student id= "1">
<name>张三</name>
<cource>java</cource>
<grade>95</grade>
</student>
<student id= "2">
<name>李四</name>
<cource>sql</cource>
<grade>95</grade>
</student>
</students>
DTD文件
用于规定XML包含的内容及格式。
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT students (student+)> <!--规定根元素students中含有的元素及个数-->
<!ELEMENT student (name, cource, grade)> <!--规定元素student中含有的元素及个数-->
<!ELEMENT id (#PCDATA)> <!--规定元素id的类型-->
<!ELEMENT name (#PCDATA)>
<!ELEMENT cource (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED> <!--规定元素student的属性id-->
Java对XML内容进行解析可以通过dom4j解析
dom4j解析XML文件:
准备工作
dom4j读取XML文件
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 XMLtest {
//<students> <!-- 根元素有且只有一个 -->
// <student id= "1">
// <name>张三</name>
// <cource>java</cource>
// <grade>95</grade>
// </student>
// <student id= "2">
// <name>李四</name>
// <cource>sql</cource>
// <grade>95</grade>
// </student>
//</students>
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
// 读取xml文件
Document doc = reader.read(new File("src/students.xml"));
// 获取根元素students
Element root = doc.getRootElement();
// 获取根元素最近一层元素student的迭代
Iterator<?> EIt = root.elementIterator();
while (EIt.hasNext()) {
Element e = (Element) EIt.next();
// 获取元素student属性的迭代
Iterator<?> AIt = e.attributeIterator();
while (AIt.hasNext()) {
Attribute att = (Attribute) AIt.next();
System.out.println(att.getName() + "=" + att.getValue());
}
// 获取元素student的其他元素
Element name = e.element("name");
Element cource = e.element("cource");
Element grade = e.element("grade");
System.out.println(name.getName() + "=" + name.getStringValue());
System.out.println(cource.getName() + "=" + cource.getText());
System.out.println(grade.getName() + "=" + grade.getText());
System.out.println("--------------------------");
}
}
}
dom4j生成XML文件
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class XMLtest2 {
public static void main(String[] args) throws Exception {
//生成doc对象
Document doc = DocumentHelper.createDocument();
//生成根元素books
Element root = doc.addElement("books");
//为根元素books添加子元素book
Element book = root.addElement("book");
//为元素book添加属性
book.addAttribute("id", "1");
//为元素book添加元素name,author,price
Element name = book.addElement("name");
Element author = book.addElement("author");
Element price = book.addElement("price");
//为元素添加值
name.addText("Java");
author.addText("李四");
price.addText("67");
//准备写入xml文件
OutputFormat format = OutputFormat.createPrettyPrint(); //格式
OutputStream out = new FileOutputStream("src/books.xml");
Writer wr=new OutputStreamWriter(out,"UTF-8"); //指定编码格式utf-8
XMLWriter writer = new XMLWriter(wr,format); //指定文件
writer.write(doc);
//关闭资源
writer.close(); //只有使用了.close doc才会写入文件中
}
}