Dom4J操作XML

来源:互联网 发布:跟美团众包类似软件 编辑:程序博客网 时间:2024/06/06 16:43

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();}}}


原创粉丝点击