XML 是标记语言:可扩展标记语言2.作用
作用: 1.网络间传输数据的格式 json 2.用于存储数据 3.配置文件使用3.内容
1.声明:4.XML读写add to build path .jar mian方法使用 .war支持服务器使用 -->
XML读写:DOM4j(最常用) SAX(读一部分解析一部分) DOM(将文本的内容全部读到内存) * 读:SAXReader * read(): 返回值是document对象 * getRootElement():对象是Element * element():指定节点,对象是element * elements():全部子节点,返回对象是List5.案例 5.1读出XML文件内容,按年龄排序* attributes():返回对象是 Attribute * getName():得到节点名 * getText():得到节点下的文本内容 * getName():得到Attribute的名 * getValue():得到Attribute的值 * 写:XMLWriter * XMLWriter(文件输出流,OutputFormat.createPrittyPrint()) * write(document) * documentHelper.createDocuement(); * add():对象是Element
xml文件
张三 2510000 李四 221019 王五 2032342
解析XML类
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
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 XMLRead2 {
public static void main(String[] args) throws documentException {
SAXReader reader = new SAXReader();
File file = new File("test.xml");
if(!file.exists()){
return;
}
document document = reader.read(file);
Element root = document.getRootElement();
List elements = root.elements();
ArrayList list = new ArrayList<>();
for(Element e:elements){
// System.out.println(e.getName());
Attribute att = e.attribute("id");
int id =Integer.parseInt(att.getValue());
// System.out.println(id);
String name = e.element("name").getTextTrim();
int age = Integer.parseInt(e.element("age").getTextTrim());
double salary = Double.parseDouble(e.element("salary").getTextTrim());
Emp emp = new Emp(id,name,age,salary);
list.add(emp);
}
System.out.println("根据员工年龄排序后的Emp集合:");
Collections.sort(list,new Comparator() {
@Override
public int compare(Emp e1, Emp e2) {
return e1.getAge() - e2.getAge();
}
});
for(Emp e:list){
System.out.println(e);
}
}
}
class Emp{
private int id;
private String name;
private int age;
private double salary;
public Emp(int id, String name, int age, double salary) {
super();
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
public Emp() {
super();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Emp [id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
long temp;
temp = Double.doubleToLongBits(salary);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Emp other = (Emp) obj;
if (age != other.age)
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (Double.doubleToLongBits(salary) != Double.doubleToLongBits(other.salary))
return false;
return true;
}
}
运行:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OX7NFRD0-1634469855802)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20211015165544673.png)]
5.2 将Emp对象写入到XML文件public class Demo3 {
public static void main(String[] args) {
// XMLWriter
// document
// 通过工具类创建该对象
document doc = documentHelper.createdocument();
// 往doc添加根节点
Element root = doc.addElement(“root”);
Element person = root.addElement("person");
Element name = person.addElement("name");
name.addText("张三");
person.addElement("age").addText("21");
Element person1 = root.addElement("person");
Element name1 = person1.addElement("name");
name1.addText("李四");
person1.addElement("age").addText("23");
Element person2 = root.addElement("person");
Element name2 = person2.addElement("name");
name2.addText("王五");
person2.addElement("age").addText("24");
File file = new File("test_copy.xml");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(file);
XMLWriter writer = new XMLWriter(fos, OutputFormat.createPrettyPrint());
// 将document对象中内容一次性写出
writer.write(doc);
System.out.println("写出完毕!");
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQfQ1XPL-1634469855804)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20211016100355336.png)]



