【Java开源代码栏目提醒】:以下是网学会员为您推荐的Java开源代码-ConfigParser.java,希望本篇文章对您学习有所帮助。
package com.business.parser;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.w3c.dom.Node;
import com.common.xml.Nodelet;
import com.common.xml.NodeletParser;
import com.common.xml.NodeletUtils;
import com.business.domain.Path;
import com.business.domain.path.Pathelement;
import com.business.domain.Project;
import com.business.domain.Property;
import com.business.domain.Target;
import com.business.domain.target.*;
public class ConfigParser {
protected final NodeletParser parser = new NodeletParser();
protected XmlParserState state = new XmlParserState();
protected boolean usingStreams = false;
public ConfigParser() {
addProjectConfigNodelets();
}
public Project buildProject(String resource) {
InputStream inputStream = null;
try {
inputStream = getResourceAsStream(resource);
usingStreams = true;
} catch (Exception e) {
System.out.println(e);
}
return parse(inputStream);
}
private Project parse(InputStream inputStream) {
try {
parser.parse(inputStream);
return state.getProject();
} catch (Exception e) {
throw new RuntimeException("Error occurred. Cause: " + e, e);
}
}
private void addProjectConfigNodelets() {
//瑙f瀽project鏍硅妭鐐?
parser.addNodelet("/project", new Nodelet() {
public void process(Node node) throws Exception {
Project project = new Project();
Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
String basedir = attributes.getProperty("basedir");
String defaultType = attributes.getProperty("default");
project.setName(name);
project.setBasedir(basedir);
project.setDefaultType(defaultType);
state.setProject(project);
}
});
//瑙f瀽project/property鑺傜偣
parser.addNodelet("/project/property", new Nodelet() {
public void process(Node node) throws Exception {
Property property = new Property();
Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
String value = attributes.getProperty("value");
property.setName(name);
property.setValue(value);
state.getProject().addProperty(name, property);
}
});
parser.addNodelet("/project/path/pathelement", new Nodelet() {
public void process(Node node) throws Exception {
Pathelement pathElement = new Pathelement();
Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String location = attributes.getProperty("location");
pathElement.setLocation(location);
state.getPath().addPathelement(location, pathElement);
}
});
parser.addNodelet("/project/path", new Nodelet() {
public void process(Node node) throws Exception {
Path path = new Path();
Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String id = attributes.getProperty("id");
path.setId(id);
state.setPath(path);
state.getProject().addPath(id, path);
}
});
parser.addNodelet("/project/target", new Nodelet() {
public void process(Node node) throws Exception {
Target target = new Target();
Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
String depends = attributes.getProperty("depends");
String description = attributes.getProperty("description");
target.setName(name);
target.setDepends(depends);
target.setDescription(description);
state.setTarget(target);
state.getProject().addTarg