【Java】简易的XML文件解析工具和Properties文件解析工具

 

XML文件解析:

package com.chy.parser.core;

import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public abstract class XMLParser {
	private static DocumentBuilder documberBulider;
	
	//使用单例模式,DocumentBuilder类的对象只需实例化一次;
	static {
		try {
			documberBulider = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
	}
	
	public XMLParser() {
	}
	
	//将该工具作为抽象类,让工具使用者自行完成dealElement方法以及对属性和内容的读取;
	public abstract void dealElement(Element element, int index);
	
	//分别处理Document和Element这两种参数类型;
	public void dealElementInTag(Document document, String tagname) {
		NodeList elementList = document.getElementsByTagName(tagname);
		for (int index = 0; index < elementList.getLength(); index++) {
			Element element = (Element) elementList.item(index);
			
			dealElement(element, index);
		}
	}
	
	public void dealElementInTag(Element element, String tagname) {
		NodeList elementList = element.getElementsByTagName(tagname);
		for (int index = 0; index < elementList.getLength(); index++) {
			Element elements = (Element) elementList.item(index);
			
			dealElement(elements, index);
		}
	}
	
	//用户决定XML文件路径参数;
	public static Document getDocument(String XMLpath) {
		Document document = null;
		try {
			InputStream input = Class.class.getResourceAsStream(XMLpath);
			document = documberBulider.parse(input);
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return document;
	}
}

 

properties文件解析:

package com.chy.parser.core;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class PropertiesParser {
	private static final Map<String, String> keyValueMap;
	
	static {
		keyValueMap = new LinkedHashMap<>();
	}
	
	//在这里对三种可能的参数类型均做处理;
	public static void loadProperties(String propertiesPath) {
		InputStream input = PropertiesParser.class.getResourceAsStream(propertiesPath);
		loadding(input);
	}
	
	public static void loadProperties(InputStream input) {
		loadding(input);
	}
	
	public static void loadProperties(File file) {
		try {
			InputStream input = new FileInputStream(file);
			loadding(input);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	public static void loadding(InputStream input) {
		Properties properties = new Properties();
		try {
			properties.load(input);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//使用枚举遍历,并存入Map;
		Enumeration<Object> keys = properties.keys();
		while (keys.hasMoreElements()) {
			String key = (String) keys.nextElement();
			String value = properties.getProperty(key);
			keyValueMap.put(key, value);
		}
	}
	
	public static Set<String> keySet() {
		return keyValueMap.keySet();
	}
	
	public static String value(String key) {
		return keyValueMap.get(key);
	}
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值