1. 程式人生 > >XML —— Java 操作 XML 工具包( JDOM&DOM4J )

XML —— Java 操作 XML 工具包( JDOM&DOM4J )

1. JDOM 引入

  • JDOM 是一種使用 XML(標準通用標記語言下的一個子集) 的獨特 Java 工具包,用於快速開發 XML 應用 程式。
  • 集合DOM 和 SAX 的優點
  • 需要引入jar包
  • JDOM 官方網站:http://www.jdom.org/
  • 小缺陷:生成文件不會格式化,需要手動格式化 ( ctrl+shift+F)
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import
    org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.XMLOutputter; public class JDOM01 { public static void main(String[] args) { Element student=new Element("student"); Attribute id=new Attribute("id", "001"); // 屬性節點 Attribute aa=new
    Attribute("aa", "xx"); student.setAttribute(id); student.setAttribute(aa); Element name=new Element("name"); //元素節點名 name.setText("張三"); // 設定文字節點 student.addContent(name); Document document=new Document(student); XMLOutputter out
    =new XMLOutputter(); out.setFormat(out.getFormat().setEncoding("UTF-8")); try { out.output(document, new FileOutputStream("src/student2.xml")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
    import java.util.List;
    
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.input.SAXBuilder;
    
    public class JDOM02 {
    
        public static void main(String[] args) throws Exception{
            SAXBuilder builder=new SAXBuilder(); // SAXBuilder
            Document document=builder.build("src/students.xml");
            Element students=document.getRootElement();
            List studentList=students.getChildren("student");
            for(int i=0;i<studentList.size();i++){
                Element student=(Element)studentList.get(i);
                String id=student.getAttributeValue("id");
                String name=student.getChildText("name");
                String sex=student.getChildText("sex");
                String age=student.getChildText("age");
                System.out.println("學號:"+id+";姓名:"+name+";性別:"+sex+";年齡:"+age);
            }
        }
    }

     

 

2. DOM4J 引入

  • dom4j 是一個 Java 的 XML API,類似於 jdom,用來讀寫 XML 檔案的。
  • dom4j 是一個非常非常優秀的 JavaXML API,具有效能優異、功能強大和極端易用使用的特點,同時它也是一個開放原始碼的軟體,可以在 SourceForge 上找到它。
  • 在 IBM developerWorks 上面可以找到一篇文章,對主流的 Java XML API 進行的效能、功能和易用性 的評測,dom4j 無論在哪個方面都是非常出色的。
  • 如今可以看到越來越多的 Java 軟體都在使用 dom4j 來讀寫 XML,特別值得一提的是連 Sun 的 JAXM 也在用 dom4j。
  • jar 包, Hibernate 用它來讀寫配置檔案。
  • DOM4J 官方網站:http://www.dom4j.org/
  • 生成的XML檔案是已格式化的
  • import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    
    public class DOM4J01 {
    
        public static void main(String[] args) {
            Document document=DocumentHelper.createDocument();     //獲取文件
            Element studentElement=document.addElement("student"); //通過文件直接新增元素
            studentElement.addAttribute("id", "001");              //新增屬性
            studentElement.addAttribute("aa", "xx");
            
            Element name=studentElement.addElement("name");        //新增元素
            name.setText("張三");                                    //設定元素值
            Element sex=studentElement.addElement("sex");
            sex.setText("男");
            Element age=studentElement.addElement("age");
            age.setText("20");
            
            OutputFormat format=OutputFormat.createPrettyPrint();  
            format.setEncoding("UTF-8");  
            try {
                XMLWriter writer=new XMLWriter(new FileOutputStream("src/student3.xml"),format); // 輸出
                writer.write(document);
                writer.close();
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    import java.util.Iterator;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class DOM4J02 {
    
        public static void main(String[] args) throws Exception{
            SAXReader saxReader=new SAXReader(); //SAXReader
            Document document=saxReader.read("src/students.xml");
            Element rootElement=document.getRootElement();
            Iterator iter=rootElement.elementIterator();
            while(iter.hasNext()){
                Element studentElement=(Element)iter.next();
                System.out.println("學號:"+studentElement.attributeValue("id"));
                System.out.println("姓名:"+studentElement.elementText("name"));
                System.out.println("性別:"+studentElement.elementText("sex"));
                System.out.println("年齡:"+studentElement.elementText("age"));
                System.out.println("=========");
            }
        }
    }