Java 讀取xml 文件,精簡

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

/** *工具

  • @author : oumin
  • @date
  • @desc :2017年2月26日 操做xml 的工具類, 這裏主要是解析做用,解析 配置xml配置文件 使用 dom4j
  • 這個讀取 bizConfig.xml 文件

*/ 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

相關文章
相關標籤/搜索