1、概述
XML(eXtensible Markup Language)可扩展标记语言
2、用途
配置文件(JavaWeb中的web.xml,c3p0输出连接池的c3p0-configxml)
数据交换格式(Ajax,WebService)
数据存储(关系型数据)
3、语法规则
- XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
- 只能有一个根标签标签
- 必须正确结束
- 标签不能交叉嵌
- 严格区分大小写
- 属性必须有值,且必须加引号
- 标签不能以数字开头
- 注释不能嵌套
- CDATA区,XML解析器不会解析其中的内容,<![CDATA[...]]>
4、XML解析
DOM (Document Object Model )
SAX (Simple APi for XML)
DOM和SAX解析的对比
示例:
TestDom4j.java
package dom4j;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import bean.Student;
public class TestDom4j {
public static void main(String[] args) throws DocumentException {
//1.创建解析器对象
SAXReader saxReader = new SAXReader();
//2.解析xml文档得到Document对象
Document document = saxReader.read("students.xml");
//3.获取根标签
Element rootElement = document.getRootElement();
//4.获取所有的 student标
List<Element> stus = rootElement.elements("student");
//5.遍历得到每一个 student标签
for(Element stu : stus) {
//获取id
String attributeValue = stu.attributeValue("id");
//获取name标签的值
String name = stu.elementText("name");
//获取age标签的值
String age = stu.elementText("age");
//获取gender标签的值
String gender = stu.elementText("gender");
//获取address标签的值
String address = stu.elementText("address");
Student student = new Student(name, gender, age, address);
System.out.println(student);
}
}
}
Student.java
package bean;
public class Student {
private String name;
private String gender;
private String age;
private String address;
public Student() {
super();
}
public Student(String name, String gender, String age, String address) {
super();
this.name = name;
this.gender = gender;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student [name=" + name + ", gender=" + gender + ", age=" + age + ", address=" + address + "]";
}
}