XML概念:
Extensible Markup Language(可扩展标记语言)
编写xml就是编写标签,扩展名为.xml
例如:
XML和HTML的比较:
相同:
都是编写标签
不同:
xml没有预定义标签,html存在大量预定义的标签
xml重在保存与传输数据,html用于显示信息
XML的用途
- Java程序的配置描述文件
例如:
-
用于保存程序产生的数据
-
网络间的数据传输
例如:
XML文档结构
-
第一行必须是XML声明:
说明XML文档的基本信息,包括版本号与字符集,写在XML第一行
例如:
书写XML文档例子: -
有且只有一个根节点
-
XML标签的书写规则和HTML相同
XML语义约束
两种定义方式:DTD和XML Schema
- DTD:文档类型定义,是一种简单易用的语义约束方式,扩展名为.dtd
利用<!ELEMENT>标签:
XML Schema:
提供了数据类型、格式限定、数据范围等特性,是W3C标准,后缀.xsd
<?xml version="1.0" encoding="utf-8"?>XML文档解析
DOM4j
DOM4j用于解析XML,会将XML是为Document对象,XML标签被Dom4j定义为Element(元素)对象
XML读取
要解析XMl首先用SAXReader 得到一个reader对象:SAXReader reader=new SAXReader();
将XML解析后以“树”的形式保存在内存中:Document document=reader.read(file);
获得根节点:Element root=document.getRootElement();
例子:
package com.Dom4j;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlReader {
public void xmlread() {
//这里获取hr.xml文件的路径
String file=“E:/java web/XMLLearn/hr.xml”;
//SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
SAXReader reader=new SAXReader();
try {
Document document=reader.read(file);
//获取XML文档的根节点,在本例中是hr标签
Element root=document.getRootElement();
//elements获取指定标签的集合
List employees=root.elements(“employee”);
for(Element employee : employees) {
//element获取唯一的子节点对象
Element name=employee.element(“name”);
//getText获取标签的文本
String emName = name.getText();
System.out.println(emName);
System.out.println(employee.elementText(“age”));
System.out.println(employee.elementText(“salary”));
Element department=employee.element(“department”);
System.out.println(department.elementText(“dname”));
System.out.println(department.elementText(“address”));
Attribute att = employee.attribute(“no”);
System.out.println(att.getText());
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
XmlReader hrread = new XmlReader();
hrread.xmlread();
}
}
XML更新
package com.Dom4j;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlWriter {
public void writerXml() {
String file = “E:/java web/XMLLearn/hr.xml”;
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
Element employee = root.addElement(“employee”);
employee.addAttribute(“no”, “1234”);
Element name = employee.addElement(“name”);
name.setText(“李铁柱”);
Element age = employee.addElement(“age”);
age.setText(“40”);
employee.addElement(“salary”).setText(“2500”);
Element department = employee.addElement(“department”);
department.addElement(“dname”).setText(“宁德师范”);
department.addElement(“address”).setText(“4号楼”);
Writer writer = new OutputStreamWriter(new FileOutputStream(file), “UTF-8”);
document.write(writer);
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
XmlWriter writer = new XmlWriter();
writer.writerXml();
}
}
XPath路径表达式