XML文档:
<?xml version="1.0" encoding="UTF-8"?> <exam> <student idcard="111" examid="222"> <name>张三</name> <num>200</num> <num>200</num> <location>长沙</location> <tel exe="0734">111222</tel> <tel>123353453</tel> </student> <student idcard="333" examid="444"> <name>李四</name> <location>衡阳</location> <grade>98</grade> <tel exe="0734">333444</tel> <tel>你好333444</tel> </student> </exam>
操作代码:
public class Dom4jDemo { @SuppressWarnings("unchecked") public void readXml() throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(Dom4jDemo.class.getClassLoader().getResourceAsStream("student.xml")); // Document document = reader.read(new FileInputStream( new File("src/student.xml"))); // Document document = reader.read(new File("src/student.xml")); // 获得XML文档的根节点 Element element = document.getRootElement(); // System.out.println(element.getName()); // 得到根节点的所有直接孩子接点 List<Element> elementList = element.elements(); for (Element ele : elementList) { // 获得接点的属性 String idcard = ele.attributeValue("idcard"); String examid = ele.attributeValue("examid"); System.out.println(ele.getName() + ":" + "学号" + idcard + ";准考证号:" + examid); // 获得每个子节点的子节点 List<Element> child = ele.elements(); for (Element elechild : child) { // 获得子节点的文本值 String value = elechild.getText(); System.out.println(elechild.getName() + ":" + value); } } } /** * 添加接点 * * @throws Exception */ public void addNode() throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); // Element rootElement = document.getRootElement(); List<Element> childElements = rootElement.elements(); for (Element element : childElements) { String idcard = element.attributeValue("idcard"); String examid = element.attributeValue("examid"); // 创建新接点 Element newElement = DocumentHelper.createElement("tel"); // 为新节点设置文本值 newElement.setText("你好" + idcard + examid); // newElement.setAttributeValue("exe", "0734"); element.add(newElement); } // 设置编码,FileWriter一直都是gb2312编码的,就算设置的编码格式还是会有乱码 // OutputFormat format = OutputFormat.createPrettyPrint(); // format.setEncoding("utf-8"); // 写入到新的XML文档里面去,更新XML文档 XMLWriter writer = new XMLWriter(new FileOutputStream(new File("src/student.xml"))); writer.write(document); writer.close(); System.out.println("over"); } /** * 删除接点 * * @throws Exception */ public void delete() throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); Element grade = (Element) document.getRootElement().element("student").element("grade"); System.out.println(grade.getName()); //获得这个节点的父节点然后将其删除 grade.getParent().remove(grade); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/student.xml"), format); writer.write(document); writer.close(); } /** * 更新数据 * * @param args */ public void update() throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); Element price = (Element) document.getRootElement().element("student").elements("tel").get(1); price.setText("123353453"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/student.xml"), format); writer.write(document); writer.close(); System.out.println("over"); } /** * 向指定位置插入节点 * @param args */ @SuppressWarnings("unchecked") public void add2() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); Element num = DocumentHelper.createElement("num"); num.setText("200"); List list = document.getRootElement().element("student").elements(); list.add(1, num);//在索引为一的位置插入这个节点 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/student.xml"),format); writer.write(document); writer.close(); System.out.println("over"); } public static void main(String[] args) { Dom4jDemo demo = new Dom4jDemo(); try { demo.readXml(); // demo.addNode(); // demo.delete(); // demo.update(); // demo.add2(); } catch (Exception e) { e.printStackTrace(); } } }