Dom4j 重要接口

Dom4j 主要接口

Document

整个文档对象,

add()方法添加子节点。

getRootElement()得到根节点。

QName

可创建的Element的基本元素名称

Element

节点

static createElement(QName qName)可创建节点

addText(String text)可添加元素的内容。add方法添加子节点。

element(String eleName)查询节点中名字为eleName的子节点。

elements(String eleName)查询节点名字为eleName的子节点列表。

selectNodes(String nodePath)查询路径为nodePath的子节点列表。

selectSingleNode(String nodePath)查询路径为nodePath的单个子节点(Element)。

OutputFormat

createPrettyPrint()可美化格式的输出。

setEncoding(String encoding) 设置编码.

XMLWriter:

new XMLWriter(new FileWriter(xmlFilePath), format)可创建xmlWriter对象。  write(Document doc)将整个doc写入到xmlWriter对象中。

close()方法:关闭io流,必写。

 

 

写入到xml文件:

 

/**//* 创建Document */
        Document doc = DocumentHelper.createDocument();

        QName serverListQName = new QName("ServerList");
        Element serverListElement = DocumentHelper.createElement(serverListQName);
        doc.add(serverListElement); //加到父节点doc
QName serverQName = new QName("server");
             Element serverElement = DocumentHelper.createElement(serverQName);
             serverListElement.add(serverElement); //加到父节点ServerList
        	
	        QName ipQName = new QName("ip");
	        Element ipElement = DocumentHelper.createElement(ipQName);
	        ipElement.addText("XXX.XX.XX.XX");
	        serverElement.add(ipElement); //加到父节点server

OutputFormat format = OutputFormat.createPrettyPrint();/**//* 美化格式的输出 */
        // OutputFormat format = OutputFormat.createCompactFormat();/*
       // 压缩格式的输出,节省空间 */
        format.setEncoding("utf-8");/**//* xml的编码 */
        XMLWriter writer = new XMLWriter(new FileWriter("test.xml"), format);  //文件的路径。
        writer.write(doc);
        writer.close();/**//* 必写无疑 */

 

生成后的文件test.xml

 

<?xml version="1.0" encoding="utf-8"?>

<ServerList>
  <server>
    <ip>XXX.XX.XX.XX</ip>
  </server>
</ServerList>

 

读取xml文件到List<ServerInfo>

/**
	 * 
	 * @param xmlFilePath
	 * @return
	 */
	public static List<ServerInfo> readXML(String xmlFilePath){
		File inputXml=new File(xmlFilePath);    
        SAXReader saxReader = new SAXReader();    
        Document document=null;
		try {
			document = saxReader.read(inputXml);
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}    
        Element employees = document.getRootElement();
        Element serlistElement = employees.element("ServerList");
        List<Element> serverElementList = serlistElement.elements("server");
        List<ServerInfo> ServerInfoList = new LinkedList<ServerInfo>();
        for(Element serverElement:serverElementList){    
        	ServerInfoList.add(new ServerInfo(serverElement.element("ip").getText(),serverElement.element("servicePort").getText(),serverElement.element("webPort").getText(),serverElement.element("serverType").getText())); 
       }
        return ServerInfoList;
	}