zoukankan      html  css  js  c++  java
  • 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

    1.xml文件

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    
    <class> 
      <student> 
        <name>张三</name>  
        <sid>111111</sid> 
      </student>  
      <student> 
        <name>李四</name>  
        <sid>222222</sid> 
      </student> 
    </class>
    复制代码

    Java代码:

    复制代码
    import java.io.FileOutputStream;
    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Dom4jCase {
        static Element root;
        public static void main(String[] args) throws Exception {
            add();//在第一个学生里面增加性别标签<sex>男</sex>
            //add2();//在第一个学生的<name>张三</name>标签后增加<home>沭阳</home>
            //delete();//删除上面增加的性别标签<sex>男</sex>
            //modify();//将上面增加的标签<home>沭阳</home>改为<home>江苏</home>
            //select();//查询所有学生姓名
        }
        //在第一个学生里面增加性别标签<sex>男</sex>
        private static void add() throws Exception {
            Document document = getRoot();
            Element s1=root.element("student");
            Element sex1=s1.addElement("sex");
            sex1.setText("男");
            writeBack(document);
        }
        //在第一个学生的<name>张三</name>标签后增加<home>沭阳</home>
        private static void add2() throws Exception {
            Document document = getRoot();
            Element s1=root.element("student");
            List<Element>list=s1.elements();
            Element home=DocumentHelper.createElement("home");
            home.setText("沭阳");
            list.add(1,home );
            writeBack(document);
        }
        //删除上面增加的性别标签<sex>男</sex>
        private static void delete() throws Exception{
            Document document = getRoot();
            Element s1=root.element("student");
            s1.remove(s1.element("sex"));
            writeBack(document);
        }
        //将上面增加的标签<home>沭阳</home>改为<home>江苏</home>
        private static void modify() throws Exception{
            Document document = getRoot();
            Element s1=root.element("student");
            s1.element("home").setText("江苏");
            writeBack(document);
        }
        //查询所有学生姓名
        private static void select() throws Exception{
            Document document = getRoot();
            List<Element> list=root.elements("student");
            for(int i=0;i<list.size();i++)
            {
                System.out.println(list.get(i).elementText("name"));
            }
        }
        //XML回写
        private static void writeBack(Document document)throws Exception {
            OutputFormat format=OutputFormat.createPrettyPrint();
            XMLWriter writer=new XMLWriter(new FileOutputStream("src/1.xml"), format);
            writer.write(document);
            writer.close();
        }
        //初始化
        private static Document getRoot() throws DocumentException {
            SAXReader saxReader=new SAXReader();
            Document document=saxReader.read("src/1.xml");
            root=document.getRootElement();
            return document;
        }
    }
    复制代码
  • 相关阅读:
    luogu P1073 最优贸易 |分层图最短路
    luogu P1901 发射站 |单调队列
    luogu P1759 通天之潜水 |背包
    luogu P1801 【黑匣子_NOI导刊2010提高(06)】|堆+分块
    bzoj1642[Usaco2007 Nov]Milking Time 挤奶时间*
    bzoj1616[Usaco2008 Mar]Cow Travelling游荡的奶牛*
    bzoj1623[Usaco2008 Open]Cow Cars 奶牛飞车*
    bzoj1612[Usaco2008 Jan]Cow Contest奶牛的比赛*
    bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支*
    bzoj1601[Usaco2008 Oct]灌水*
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/7595375.html
Copyright © 2011-2022 走看看