javaXML:
1.读XML文件:代码
package qqq;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.*;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
class testdom4j {
public static void main(String[] args) {
/*
* 解析emplist实例存入list集合中
* 1.创建SAXreader
* 2.使用SAXReader读取xml文档并返回Document对象
*3.根据Document对象获取根元素
*4.按照xml结构从跟元素开始逐渐获取子元素以达到遍历xml的目的
*/
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream("newxml.xml"));
/*
* 获取跟元素
* Element的每个实例用于表示xml文档中的一个元素(标签)
* 这里相当与《list》标签
*/
Element root = doc.getRootElement();
/*
* Elemnet获取元素的方法
*
* String getName获取当前标签的名字
* List elements获取当前标签的子标签
* List elements(String name) 获取当前标签下的同名标签
* Element elements(String name) 获取指定名字的子标签
* Atttribute attribute(String name) 获取当前标签的属性
* String getText(); 获取标签中的文本
*/
List<Emp> emplist = new ArrayList<Emp>();
List<Element> elements = root.elements();
/*
* 遍历所有《emp》标签并解析出该员工的相关信息以Emp实例保存并存储在emplist集合中
*/
for(Element empEle : elements) {
//获取名字
Element nameEle = empEle.element("name");
String name = nameEle.getTextTrim();
System.out.println(name);
//获取年龄
Element ageEle = empEle.element("age");
int age = Integer.parseInt(ageEle.getTextTrim());
//获取性别
Element genderEle = empEle.element("gender");
String gender = genderEle.getTextTrim();
//获取工资(薪水)
Element salaryEle = empEle.element("salary");
int salary = Integer.parseInt(salaryEle.getTextTrim());
//获取id
Attribute attr = empEle.attribute("id");
String attr_name = attr.getName();
int id = Integer.parseInt(attr.getValue());
Emp emp = new Emp(id,name,age,gender,salary);
emplist.add(emp);
}
System.out.println("解析完毕!");
System.out.println("共"+emplist.size()+"个成员");
for(Emp emp : emplist) {
System.out.println(emp);
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
2.写入XML文件:
package qqq;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.*;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
class writeXml {
public static void main(String[] args) {
List<Emp> emplist = new ArrayList<Emp>();
emplist.add(new Emp(1, "zs", 17, "nan", 8000));
emplist.add(new Emp(2, "zs", 17, "nan", 8000));
emplist.add(new Emp(3, "zs", 17, "nan", 8000));
emplist.add(new Emp(4, "zs", 17, "nan", 8000));
/*
* 1.创建一个Document对象表示一个空的xml文档 2.添加根元素 3.按照生成的西米露格式添加子元素
* 4.创建xmlWriter将Document写出
*/
XMLWriter writer = null;
try {
// 1
Document document = DocumentHelper.createDocument();
/*
* 2添加list标签 Element addElement(String name)返回Element实例 该方法只能调一次,文档中只能有一个根元素
*/
Element root = document.addElement("list");
// 3将emplist集合中的每个成员以一个《emp》标签存到《list》标签中
for (Emp emp : emplist) {
/*
* Element addElement(String name) 向当前标签中添加给定名字的子标签并返回
*
* Element addText(String text); 向当前标签中添加文本返回值为当前标签
*
* Element addAttribute(String name,String value) 向当前标签添加属性和文本返回值为当前标签
*/
// 向根标签《list》 添加子标签《emp》
Element empEle = root.addElement("emp");
// 向《emp》 标签中添加《name》
Element nameEle = empEle.addElement("name");
nameEle.addText(emp.getName());
// 添加gender
Element genderEle = empEle.addElement("gender");
genderEle.addText(emp.getGender());
// 添加age
Element ageEle = empEle.addElement("age");
ageEle.addText(emp.getAge() + "");
// 添加salary
Element salatyEle = empEle.addElement("salary");
salatyEle.addText(emp.getSalary() + "");
empEle.addAttribute("id", emp.getId() + "");
}
FileOutputStream fos = new FileOutputStream("myemp.xml");
writer = new XMLWriter(fos,OutputFormat.createCompactFormat());
writer.write(document);
System.out.println("secceseful");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
}
3.使用Xpath读XML
package qqq;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Xpathdemo {
public static void main(String[] args) {
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream("newxml.xml"));
String xpath = "/list/emp[salary>4000]/name";
List<Element> list = doc.selectNodes(xpath);
for(Element ele : list) {
System.out.println(ele.getName()+""+ele.getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}