使用dom4j.jar 读取xml

来源:互联网 发布:烈火之剑JAVA全升 编辑:程序博客网 时间:2024/05/13 21:27

原xml 文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!--
<!DOCTYPE tians SYSTEM "tianHello.dtd">
 -->
<!DOCTYPE tians[
<!ELEMENT tians (tian*)>
<!ELEMENT tian (class+,method+)>
<!ATTLIST tian id ID #IMPLIED>
<!ELEMENT class (#PCDATA)>
<!ELEMENT method (field*)>
<!ATTLIST method name CDATA #REQUIRED>
<!ELEMENT field (#PCDATA)>
<!ATTLIST field type CDATA #REQUIRED>
<!ATTLIST field name CDATA #REQUIRED>
]>

<tians>
<tian>
<class>tian.busi.Manager.TianHello</class>
<method name="sayHello">
<field type="java.lang.String" name="str"></field>
</method>
</tian>
</tians>



java 类


package tian.core.configFactory;

import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class ReadXMl {

    @Test
    public void ReadXml() throws Exception{
        SAXReader reader = new SAXReader();
        Document doc=reader.read(new File("D:\\lesowork_2\\XMLRead\\resource\\tian\\busiXml\\tianHello.xml"));
        Element root =doc.getRootElement();
        Iterator iterator = root.elementIterator("tian");
        while(iterator.hasNext()){
            Element element=(Element) iterator.next();
            String name=element.getName();
            String id=element.attributeValue("id");
            //节点 名称
            System.out.println("name >>> "+name);
            //节点属性 id 值
            System.out.println("id >>>"+id);
            long ID=0l;
            if(null==id){
                ID=Long.valueOf(new Date().getTime()+UUID.randomUUID().toString().substring(0, 4));
            }
            Iterator clss = element.elementIterator("class");
            if(!clss.hasNext()){
                throw new Exception("xml文件中找不到class");
            }
            Element cls=(Element) clss.next();
            String clsName=cls.getName();
            String value=cls.getTextTrim();
            System.out.println("clsName  >>"+clsName);
            System.out.println("value   >>"+value);
            Iterator methods = element.elementIterator("method");
            if(!methods.hasNext()){
                throw new Exception("xml文件中找不到method");
            }
            Element method=(Element) methods.next();
            String methodName=method.getName();
            String nameValue=method.attributeValue("name");
            System.out.println("methodName >>"+methodName);
            System.out.println("nameValue  >>"+nameValue);
            Map<String,String>fieldMap=new HashMap<String,String>();
            Iterator fields = method.elementIterator("field");
            if(fields.hasNext()){
            while(fields.hasNext()){
                Element field=(Element) fields.next();
                String fieldType=field.attributeValue("type");
                String fieldName=field.attributeValue("name");
                fieldMap.put(fieldName, fieldType);
            }    
            }
        }
    }
}