XML:dom4j
student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student id="001">
<name>ann</name>
<age>12</age>
</student>
<student id="002">
<name>lilei</name>
<age>15</age>
</student>
<student id="003">
<name>jim</name>
<age>18</age>
</student>
<student id="004">
<name>wanson</name>
<age>20</age>
</student>
</students>
源码
package com.shanghai.wanson.dom4j_usage;
import java.io.File;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;
import org.dom4j.*;
import org.dom4j.io.*;
public class Driver {
/**
* 根元素操作处理
* @param args
* @throws DocumentException
*/
public static void main(String[] args) throws DocumentException {
//1.获取dom4j中读取xml文档的对象。SAXReader
SAXReader saxReader=new SAXReader();
File file=new File("student.xml");
//2.通过该读取对象的read方法,与要操作的xml文档的相关联。获取该文档的document对象。
Document document=saxReader.read(file);
//System.out.println(document.asXML());
/*System.out.println(document.getNodeTypeName());
System.out.println(document.getNodeType()); */
//3.通过文档对象document,可以获取根元素节点对象。
Element rootElement=document.getRootElement();
/*System.out.println(rootElement.getNodeTypeName());
System.out.println(rootElement.getNodeType());*/
/*System.out.println(rootElement.element("student").attribute("id").getNodeTypeName());
System.out.println(rootElement.element("student").attribute("id").getNodeType());*/
//4.通过根元素对象就可以文档的内容进行操作。
// System.out.println("根元素的名称:\t"+rootElement.getName());
// handleElementOperation(document);
// shouAllElements(document);
// getAllAttribute(document);
// handleAddNode(document);
// handleRemoveNode(document);
handleRemoveById(document, "003");
}
/**
* 单元素结点操作
* @param document
*/
public static void handleElementOperation(Document document) {
Element rootElement=document.getRootElement();
//获取一个学生节点
Element stuElement=rootElement.element("student");
//System.out.println(stuElement.getName());
//获取姓名
Element nameElement=stuElement.element("name");
//String name=nameElement.getText();
System.out.print("学生姓名:"+nameElement.getName()+"="+nameElement.getText());
//获取年龄
Element ageElement=stuElement.element("age");
String age=ageElement.getText();
System.out.print("学生年龄:"+ageElement.getName()+"="+age);
}
/**
* 获取所有学生信息(姓名,年龄)元素
* @param document
*/
public static void shouAllElements(Document document) {
Element rootElement=document.getRootElement();
List<Element> eList=rootElement.elements();
for (int i = 0; i < eList.size(); i++) {
Element studentElement=eList.get(i);
/*System.out.println(studentElement.getName());
System.out.println(studentElement.getNodeTypeName());
System.out.println(studentElement.getNodeType());*/
//方法1
/*System.out.println("姓名:\t"+studentElement.getText()+studentElement.element("name").getText());
System.out.println("年龄:\t"+studentElement.getText()+studentElement.element("age").getText());*/
//方法2
System.out.println("姓名:\t"+studentElement.elementText("name"));
System.out.println("年龄:\t"+studentElement.elementText("age"));
}
}
/**
* 获取属性
*/
public static void getAllAttribute(Document document) {
Element rootElement=document.getRootElement();
Iterator<Element> iterator=rootElement.elementIterator("student");
while (iterator.hasNext()) {
Element studentElement = (Element) iterator.next();
/*
* Document:用于描述XML文档。
Element:用于描述XML文档中的元素。
Attribute:用于描述XML文档中的元素的属性。
*/
//方法1
/*Attribute idAttribute=studentElement.attribute(0);
System.out.println(idAttribute.getName()+"="+idAttribute.getValue());*/
//方法2
System.out.println(studentElement.attributeValue("id"));
}
}
/**
* 添加一个学生节点
* @param document
*/
public static void handleAddNode(Document document) {
Element rootElement=document.getRootElement();
Element studentElement=rootElement.addElement("student");
//方法1
/*studentElement=studentElement.addAttribute("id","005");
Element nameElement=studentElement.addElement("name");
System.out.println(nameElement.getName());
nameElement.addText("work");*/
//方法2
studentElement.addAttribute("id", "006").addElement("name").addText("jim");
studentElement.addElement("age").addText("23");
System.out.println(document.asXML());
}
/**
* 移除节点
* @param document
*/
public static void handleRemoveNode(Document document) {
Element rootElement=document.getRootElement();
Element studentElement=rootElement.elements("student").get(3);
/*System.out.println(studentElement.elementText("name"));
System.out.println(studentElement.elementText("age"));*/
//方法1
/*Attribute idAttribute=studentElement.attribute("id");
Element nameElement=studentElement.element("name");
Element ageElement=studentElement.element("age");
studentElement.remove(idAttribute);//删除id
studentElement.remove(nameElement);//删除姓名
studentElement.remove(ageElement);//删除年龄
*/
//方法2
rootElement.remove(studentElement);
System.out.println(document.asXML());
}
/**
* 通过id删除节点
* @param document
*/
public static void handleRemoveById(Document document,String id) {
Element rootElement=document.getRootElement();
List<Element> list=rootElement.elements("student");
boolean flag=false;//默认id不存在
for(Element element:list) {
if(element.attribute("id").getValue().equals(id)) {
flag=true;//id 存在
rootElement.remove(element);
break;
}
}
if(!flag) {
System.out.println("你id 不存在!!");
}else {
System.out.println(document.asXML());
}
}
}
posted on 2018-08-01 13:50 Indian_Mysore 阅读(99) 评论(0) 编辑 收藏 举报