XML简介:
- XML–可扩展标记语言eXtensible Markup Language
- 由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范
- XML的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
- XML用来传输和存储数据,HTML用来显示数据
- XML没有预定义标签,均为自定义标签
XML用途:
- 配置文件
JavaWeb中的web.xml
C3P0中的c3p0-config.xml - 数据交换格式
Ajax
WebService - 数据存储
保存关系型数据
XML基本语法:
- XML文档组成
① XML声明
version属性指定XML版本,固定值是1.0
encoding指定的字符集,是告诉解析器使用什么字符集进行解码,而编码是由文本 编辑器决定的
② CDATA区
当XML文档中需要写一些程序代码、SQL语句或其他不希望XML解析器进行解析 的内容时,就可以写在CDATA区中
XML解析器会将CDATA区中的内容原封不动的输出
CDATA区的定义格式:<![CDATA[…]]> - 语法规则
① XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
② 只能有一个根标签
③ 标签必须正确结束
④ 标签不能交叉嵌
⑤ 严格区分大小写
⑥ 属性必须有值,且必须加引号
⑦ 标签不能以数字开头
⑧ 注释不能嵌套
XML文件实例:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>孙悟空</name>
<gender>公</gender>
<age>520</age>
<address>花果山</address>
</student>
<student id="2">
<name>猪八戒</name>
<gender>公</gender>
<age>1500</age>
<address>高老庄</address>
</student>
<student id="3">
<name>沙悟净</name>
<gender>男</gender>
<age>1000</age>
<address>流沙河</address>
</student>
<student id="4">
<name>白龙马</name>
<gender>公</gender>
<age>10000</age>
<address>鹰愁涧</address>
</student>
<![CDATA[
select * from employees where age < 500
]]>
</students>
XML文件的解析:
解析的类:
public class Student {
private String id;
private String name;
private String gender;
private String age;
private String address;
public Student(String id, String name, String gender, String age, String address) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
this.address = address;
}
public Student() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + ", address=" + address
+ "]";
}
}
解析:
public class Dom4jTest {
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> elements = rootElement.elements("student");
System.out.println(elements.size());
//5.遍历得到的每一个student标签
for (Element element : elements) {
//获取id
String id = element.attributeValue("id");
System.out.println(id);
//获取name标签
// Element nameEle = element.element("name");
// //获取name标签中的文本值
// String name = nameEle.getText();
String name = element.elementText("name");
System.out.println(name);
//获取gender
String gender = element.elementText("gender");
//获取age
String age = element.elementText("age");
//获取address
String address = element.elementText("address");
//封装Student对象
Student student = new Student(id, name, gender, age, address);
System.out.println(student);
}
}
}