JDOM 和 DOM4J

来源:互联网 发布:淘宝找不到自己的品牌 编辑:程序博客网 时间:2024/06/05 10:36

對於xml文件

<?xml version="1.0" encoding="UTF-8"?><Employees>    <Employee id="1">        <age>29</age>        <name>Pankaj</name>        <gender>Male</gender>        <role>Java Developer</role>    </Employee>    <Employee id="2">        <age>35</age>        <name>Lisa</name>        <gender>Female</gender>        <role>CEO</role>    </Employee>    <Employee id="3">        <age>40</age>        <name>Tom</name>        <gender>Male</gender>        <role>Manager</role>    </Employee></Employees>
JDOM:

public void test() throws Exception {
        // 1 创建 DOM DocumentBuilder工厂
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        // 2 创建DOM DocumentBuilder类
        DocumentBuilder dBuilder = null;
        dBuilder = dbFactory.newDocumentBuilder();
        // 3 创建Document类
        Document doc = dBuilder.parse(new File("/home/rjm/Desktop/mytest.xml"));
        // 4 创建DOMBuilder
        DOMBuilder domBuilder = new DOMBuilder();
        // 5 创建DOM文档
        org.jdom2.Document jdomDoc = domBuilder.build(doc);
        // 6 获取根Element
        Element root = jdomDoc.getRootElement();
        // 7 获取子元素列表
        List<Element> empListElements = root.getChildren();
        List<Employee> empList = new ArrayList<Employee>();
        // 8 遍历子元素列表存儲
        for (Element empElement : empListElements) {
            Employee emp = new Employee();
            emp.setId(Integer.parseInt(empElement.getAttributeValue("id")));
            emp.setAge(Integer.parseInt(empElement.getChildText("age")));
            emp.setName(empElement.getChildText("name"));
            emp.setRole(empElement.getChildText("role"));
            emp.setGender(empElement.getChildText("gender"));
            empList.add(emp);
        }
        // 7 打印
        for (Employee emp : empList) {
            System.out.println(emp);
        }
    }

    class Employee {
        private int id;
        private String name;
        private String gender;
        private int age;
        private String role;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getGender() {
            return gender;
        }

        public void setGender(String gender) {
            this.gender = gender;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public String getRole() {
            return role;
        }

        public void setRole(String role) {
            this.role = role;
        }

        public String toString() {
            return "Employee:: ID=" + this.id + " Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender
                    + " Role=" + this.role;
        }
    }

DOM4J:

1.读取

    public void Dom4j() throws Exception {
        InputStream in = new FileInputStream("/home/rjm/Desktop/mytest.xml");
        // 1 創建SAXReader讀取器
        SAXReader saxReader = new SAXReader();
        // 2 讀入xml輸入流
        org.dom4j.Document document = saxReader.read(in);
        // 3 獲取根結點
        org.dom4j.Element rootElement = document.getRootElement();
        // 4 獲取根結點屬性
        System.out.println("根結點名字:" + rootElement.getName());
        System.out.println("根結點屬性數量:" + rootElement.attributeCount());
        System.out.println("根結點屬性:" + rootElement.attributeValue("id"));
        // System.out.println("根結點內容:"+rootElement.getText());
        // System.out.println("根結點子結點的內容"+rootElement.getStringValue());
        // 5 獲取子結點
        List<org.dom4j.Element> list=new ArrayList<org.dom4j.Element>();
        list= rootElement.elements("Employee");
        for(org.dom4j.Element childElement:list)
            System.out.println("子結點內容"+childElement.getStringValue());
    }

2.输入

public void createXml() throws Exception {
        // DocumentHelper提供了創建Document對象的方式
        org.dom4j.Document document = DocumentHelper.createDocument();
        // 添加結點信息
        org.dom4j.Element rootElement = document.addElement("modules");
        rootElement.setText("這個時modules結點的文本信息");
        org.dom4j.Element element = rootElement.addElement("module");

        org.dom4j.Element nameElement = element.addElement("name");
        org.dom4j.Element valueElement = element.addElement("valus");
        org.dom4j.Element descriptionElement = element.addElement("description");
        nameElement.setText("名稱");
        nameElement.addAttribute("language", "java");
        valueElement.setText("值");
        valueElement.addAttribute("language", "c#");
        descriptionElement.setText("描述");
        descriptionElement.addAttribute("language", "sql server");
        System.out.println(document.asXML());

        Writer fileWriter = new FileWriter("/home/rjm/Desktop/test1.xml");
        // dom4j提供了專門寫入文件的對象WMLWriter
        XMLWriter xmlWriter=new XMLWriter(fileWriter);
        xmlWriter.write(document);
        xmlWriter.flush();
        xmlWriter.close();
        System.out.println("添加成功");
        

    }

參考:http://blog.csdn.net/rongbo_j/article/details/50320689

參考:http://blog.csdn.net/chenghui0317/article/details/11486271

0 0