JAVAはどのようにDom 4 jを使ってxmlのDEMOケースを解析します

18827 ワード

まずDom 4 Jのjarパッケージ(パスワード:kjv 8)をインポート
xmlファイルの不動産会社のid、名前、住所を印刷します
demo01.xml

<companys>
    <company id="1001">
        <name>  Aname>
        <address>    address>
    company>
    <company id="1002">
        <name>  Bname>
        <address>    address>
    company>
    <company id="1003">
        <name>  Cname>
        <address>  address>
    company>
    <company id="1006">
        <name>  Dname>
        <address>  address>
    company>
companys>

Companyクラス
import java.io.Serializable;

public class Company implements Serializable{
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String name;
    private String address;

    public Company() {}
    public Company(String name, String address) {
        this.name = name;
        this.address = address;
    }
    public Company(Integer id, String name, String address) {
        this.id = id;
        this.name = name;
        this.address = address;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Company other = (Company) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }
    @Override
    public String toString() {
        return "Company [id=" + id + ", name=" + name + ", address=" + address + "]
\r"
; } }

DOM 4 J解析XMLファイル
import java.io.InputStream;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * DOM4J  XML  
 */
public class XMLDemo1 {

    public static void main(String[] args) throws DocumentException{
        /** 1.      XML          XML      
         *    XML                ,       JAVA   
         *      JAVA          ,                      
         *                     ,          
         */
        SAXReader reader = new SAXReader();

        /**
         * 2.    (         )        XML  
         *                  ,       ,           
         *   :
         * InputStream     =   .class.getClassLoader().getResourceAsStream("   ");
         */
        InputStream is = 
                XMLDemo1.class.getClassLoader().getResourceAsStream("demo01.xml");
        /**
         *3.    SAXReader                            XML                     
         *   reader      read()  ,   InputStream     
         *   :       import org.dom4j.Document; 
         */
         Document doc = reader.read(is); 

         /**
          *   XML     ,       xml    ,           ,          
          */
         /**
          * 4.      
          *   :       import org.dom4j.Element;
          */
         Element root = doc.getRootElement();
         //System.out.println(root.getName()); //         companys

        /**
         * 5.              
         *   :
         * import java.util.Iterator; 
         * import org.dom4j.Attribute; 
         */
         Iterator it = root.elementIterator();
         while(it.hasNext()){
             Element e = it.next();//     
             //System.out.println(e.getName());

             //      :   :              
             //String id = e.attributeValue("id"); //    id      XML          String  
             // System.out.println(id);
             //            
             Attribute idAttr = e.attribute("id");
             String id = idAttr.getValue();
             //System.out.println(id);

             //             
             Element nameElement = e.element("name");
             //          
             String name = nameElement.getText();
             //System.out.println(name); //  A  B  C  D
             //      
             Element addressElement = e.element("address");
             String address = addressElement.getText();
             System.out.println(address);


             //    
             Company company = new Company();
             company.setId(Integer.parseInt(id));
             company.setName(name);
             company.setAddress(address);
             System.out.println(company); 
             /**
              * Company [id=1001, name=  A, address=    ]
              * Company [id=1002, name=  B, address=    ]
              * Company [id=1003, name=  C, address=  ]
              * Company [id=1006, name=  D, address=  ]
              */
         }   
    }
}

XPathアプリケーションはxmlファイルを解析し、XPathアプリケーションとDom 4 jは全体であり、実際にはDom 4 jの中のツールである.まずjaxen-1.1-beta-7.jarをインポートするjarパッケージ(パスワード:kjv 8)XPathは、XMLドキュメントで情報をすばやく検索する言語です.単純にdomを用いてノードにアクセスする場合は,1層1層の処理が必要である.XPathがあれば、ノードの位置決めが簡単になり、パス式に基づいて要素、属性をすばやく取得できます.
     XPath         
       / :          "/companys/company/name"
       //:               "//name"
       ..:             ".."
       . :      
       @ :            "//company//@id"
import java.io.InputStream;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 
 * DOM4J  XML   XPath  
 * 
 */
public class XMLDemo2 {

    public static void main(String[] args) throws DocumentException {
        //1、       XML             XML      
        SAXReader reader = new SAXReader();     
        //2、       
        InputStream is = 
                XMLDemo2.class.getClassLoader().getResourceAsStream("demo01.xml");
        //3、    XML    
        Document doc = reader.read(is);
        Element root = doc.getRootElement();

        //  "/"      
        List list = root.selectNodes("/companys/company/name");
        System.out.println(list.size());
        for (Element element : list) {
            System.out.println("name     :"+element.getText());
        }       
        //  "//"      
        List list1 = root.selectNodes("//name");
        System.out.println(list1.size());
        for (Element element : list1) {
            System.out.println("name     :"+element.getText());
            /**
             * name     :  A
               name     :  B
               name     :  C
               name     :  D
             */
        }       
        //   ".."     ,   "."      ,
        Element companyEle = root.element("company");
        //System.out.println(companyEle.attributeValue("id"));
        Element fat = (Element) companyEle.selectSingleNode("..");//Node
        //Element fat = (Element) companyEle.selectSingleNode(".");//Node
        System.out.println("   "+fat.getName());//companys  
        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
        //  "@"    
        List list2 = root.selectNodes("//company//@id");
        System.out.println(list2.size()); //4
        for (Attribute attribute : list2) {
            System.out.print(attribute.getValue()+" ");//1001 1002 1003 1006 
        }
    }
}