一.DOM4J查询
- 创建DOM对象
//File
File file = new File("D:/java/TestFile/contacts.xml");
//使用DOM4J获取Document对象
@Test
public void testDocument() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(file);
System.out.println(document);
}
- 查询所有联系人信息
//Linkman类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Linkman {
private String name;
private String email;
private String attribute;
private String group;
}
//遍历xml下的所有节点
@Test
public void testqueryAll() throws Exception {
//1)获取Document对象
SAXReader reader = new SAXReader();
Document document = reader.read(file);
//2)获取跟节点
Element root = document.getRootElement();
//3)获取根节点下的节点列表
List<Element> list = root.elements();
List<Linkman> listLinkman = new ArrayList<>();
//4)遍历
for (Element element : list) {
//方式1
/*Element ele = (Element)element.elements("name").get(0);
String s = ele.getText();
System.out.println(s);*/
//方式二
/*Element ele = element.element("name");
String s = ele.getText();
System.out.println(s);*/
//方式三
/*String s = element.elementText("name");
System.out.println(s);*/
//获取各个节点的内容
String name = element.elementText("name");
String email = element.elementText("email");
String attribute = element.elementText("attribute");
String group = element.elementText("group");
//5)根据对象创建Linkman对象
Linkman linkman = new Linkman(name, email, attribute, group);
//6)添加到list中
listLinkman.add(linkman);
}
//验证
for (Linkman linkman : listLinkman) {
System.out.println(linkman);
}
}
二.DOM增加
增加一个联系人
//新增一个联系人
@Test
public void testAdd() throws Exception {
//1)获取Document对象
Document document = new SAXReader().read(file);
//2)获取跟节点
Element root = document.getRootElement();
//3)在根节点下新增一个联系人
Element eleLinkman = root.addElement("linkman","s3");
//4)联系人节点下新增详细信息
eleLinkman.addElement("name","西门吹·牛");
eleLinkman.addElement("email","wudi@wuliao.com");
eleLinkman.addElement("attribute","中国钓鱼岛");
eleLinkman.addElement("group","卫国");
//5)同步
/*//创建XMLWriter对象
XMLWriter writer = new XMLWriter(new FileWriter(file));
//输出
writer.write(document);
//关闭流
writer.close();*/
//华丽的格式输出
//格式
OutputFormat format = OutputFormat.createPrettyPrint();
//根据输出流和格式创建XMLWriter对象
XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
//写入
writer.write(document);
//关闭流
writer.close();
}