xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<slc_config>
<current_connection>korea_test</current_connection>
<server name="korea_test">
<address>10.156.125.2</address>
<port>18700</port>
<GLIDs>
<GLID>006100000000</GLID>
<GLID>006100001000</GLID>
</GLIDs>
</server>
<server name="simulator">
<address>127.0.0.1</address>
<port>8001</port>
<GLIDs>
<GLID>006100000000</GLID>
<GLID>006100001000</GLID>
<GLID>006101001000</GLID>
<GLID>006101001001</GLID>
</GLIDs>
</server>
<server name="hk_test">
<address>hkxd026</address>
<port>18286</port>
<GLIDs>
<GLID>000800001000</GLID>
</GLIDs>
</server>
</slc_config>
该文件放在src下面
解析的java类SLCConfig.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class SLCConfig {
/** Log use for debug and out print. */
private static final Logger logger = Logger.getLogger(SLCConfig.class);
/** Singtlon instance. */
private static SLCConfig parser;
/** Mapping file. */
private static String mappingfile = "SLC_config.xml";
/** Contain all of mapping rule in mapping file. */
protected Hashtable<String,Element> messageMappingTable;
/**
* Initializes some fields <br>
* it can be override.
*/
protected void init() {
messageMappingTable = new Hashtable<String,Element>();
parse(ClassLoader.getSystemResourceAsStream(mappingfile));
}
/**
* parse SLC_config.xml.
* @param
*/
public void parse(InputStream input) {
SAXReader saxReader = new SAXReader();
Document document = null;
try {
document = saxReader.read(input);
Element root = document.getRootElement();
List messages = root.elements("server");
Iterator iter = messages.listIterator();
while (iter.hasNext()) {
Element message = (Element) iter.next();
System.out.println("server name = " + message.attribute("name").getValue());
messageMappingTable.put(message.attribute("name").getValue(), message);
}
} catch (DocumentException e) {
logger.error("Cannot parse SLC_config.xml:" + e.getMessage());
}
}
public void parsePort(String requestPort){
Element element = (Element) messageMappingTable.get(requestPort);
List fields = element.elements("port");
Iterator iter = fields.iterator();
while (iter.hasNext()) {
Element message = (Element) iter.next();
String port = message.getText();
System.out.println(port);
}
}
public void parseAddress(String requestAddress){
Element element = (Element) messageMappingTable.get(requestAddress);
List fields = element.elements("address");
Iterator iter = fields.iterator();
while (iter.hasNext()) {
Element message = (Element) iter.next();
String address = message.getText();
}
}
public void parseGlids(String requestGlids){
Element element = (Element) messageMappingTable.get(requestGlids);
List fields = element.elements("GLIDs");
Iterator iter = fields.iterator();
while (iter.hasNext()) {
Element message = (Element) iter.next();
messageMappingTable.put(message.attribute("GLIDs").getValue(), message);
}
}
public void parseGlid(String requestGlid){
Element element = (Element) messageMappingTable.get(requestGlid);
List fields = element.elements("GLID");
Iterator iter = fields.iterator();
while (iter.hasNext()) {
Element message = (Element) iter.next();
String glid = message.getText();
}
}
public Hashtable getMessageMappingTable() {
return messageMappingTable;
}
}