package com.skg.utils;java
import java.io.File; import java.util.ArrayList; import java.util.List;web
import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;dom
/** *工具
*/ public class XmlHelpUtil {.net
/** * * [@author](https://my.oschina.net/arthor) : oumin * [@date](https://my.oschina.net/u/2504391) : * @desc :2017年2月26日 * xmlName 須要讀取的 文件名稱,這裏默認都是 src/main/resources/conf/ 下面的 * 必須帶上 文件的後綴。 * @param elements 獲取特定名稱的子元素 , * 只獲取 根元素下面的 子元素。 * 根節點下面的 對應的 子元素名稱。而不是 子元素屬性名稱 * @return 返回一個 list,若是是 只要一個話,返回一個 單個 對象的list 。 * 若是隻須要 第一個元素的話, 能夠採用 獲取list的 第一個對象來使用。 * @throws Exception * */ public static List<String> readXml(String xmlName ,String elements) throws Exception{ List<String> textList=new ArrayList<String>(); //文件路徑 該文件必須放在 web 裏面的resource 裏面,不然放入其餘模塊裏面是讀取不到的。 String xmlPath=XmlHelpUtil.class.getClassLoader().getResource("conf/"+xmlName).getFile(); String xmlPathReal=""; if (xmlPath.startsWith("file") ) { xmlPathReal=xmlPath.substring(6); }else { xmlPathReal= xmlPath; } File xmlfile = new File(xmlPathReal); SAXReader saxReader = new SAXReader(); // 不進行判斷文件是否,存在,不存在就拋異常好了。 //File xmlfile = new File(xmlPath); Document document = saxReader.read(xmlfile); // 獲取根元素 Element root = document.getRootElement(); // 獲取特定名稱的子元素 List<Element> childList = root.elements(elements); for (Element element : childList) { //獲取特色名稱子元素的 內容,text textList.add(element.getTextTrim()); } return textList; } /** * * @author : oumin * @date : * @desc :2017年2月26日 * * @param args * @throws Exception * 例子: * * * <?xml version="1.0" encoding="UTF-8"?> <students name="zhangsan"> <hello name="lisi">hello Text1</hello> <hello name="lisi2">hello Text2</hello> <hello name="lisi3">hello Text3</hello> <world name="wangwu">world text1</world> <world name="wangwu2">world text2</world> <world >world text3</world> </students> * * */ public static void main(String[] args) throws Exception { File xmlfile = new File("src/main/resources/conf/bizConfig.xml"); if (xmlfile.isFile()) { System.out.println(">>>找到文件"); } else { System.out.println(">>>沒有找到文件"); return; } SAXReader saxReader = new SAXReader(); Document document = saxReader.read(xmlfile); // 獲取根元素 Element root = document.getRootElement(); System.out.println("Root:根元素 " + root.getName()); // 獲取全部子元素 List<Element> childList = root.elements(); System.out.println("total child count:全部子元素 數量" + childList.size()); // 獲取特定名稱的子元素 List<Element> childList2 = root.elements("hello"); System.out.println("hello child:都是 hello的子元素數量 " + childList2.size()); for (Element element : childList2) { //System.out.println(">>>節點值"+element.getStringValue()); System.out.println("hello節點name屬性的名稱>>"+element.attributeValue("name")); System.out.println("hello節點值>>"+element.getTextTrim()); } // 獲取名字爲指定名稱的第一個子元素 Element firstWorldElement = root.element("world"); // 輸出其屬性 System.out.println("first World Attr: world>> " + firstWorldElement.attribute(0).getName() + "=" + firstWorldElement.attributeValue("name")+"##" +firstWorldElement.getTextTrim()); /* System.out.println("迭代輸出-----------------------"); // 迭代輸出 for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element e = (Element) iter.next(); System.out.println("節點名稱>>"+e.attributeValue("name")); System.out.println("節點值>>"+e.getTextTrim()); }*/ }
}code