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);
}
}