1、读取工具类
public static Document getXMLAttribute(String filepath, String nodeName){
Document document = null;
List<Map<String,String>> retListmap = new ArrayList<>();
try {
//创建解析器
SAXReader reader=new SAXReader();//创建读取文件内容对象
document=reader.read(filepath);//指定文件并读取
return document;
}catch (DocumentException e){
if (document!=null){
document.clone();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2、调用
public class XMLConfig {
public static Document getTomcatServerContext(){
Document el = DocumentUtils.getXMLAttribute(ApplicationConfig.pathurl+"/tomcat/conf/server.xml","Context");
return el;
//return list;
}
/**
* 把改变的domcument对象保存到指定的xml文件中
*/
public static String saveDocument(Document document){
XMLWriter writer = null;
try {
Writer osWrite=new OutputStreamWriter(new FileOutputStream(ApplicationConfig.pathurl+"/tomcat/conf/server.xml"));//创建输出流
OutputFormat format = OutputFormat.createPrettyPrint(); //获取输出的指定格式
format.setEncoding("UTF-8");//设置编码 ,确保解析的xml为UTF-8格式
writer = new XMLWriter(osWrite,format);//XMLWriter 指定输出文件以及格式
writer.write(document);//把document写入xmlFile指定的文件(可以为被解析的文件或者新创建的文件)
writer.flush();
writer.close();
return "修改配置文件成功";
}catch (Exception e){
if (writer!=null){
try {
writer.flush();
writer.close();
}catch (Exception ex){
}
}
}
return "修改配置文件失败!";
}
}
3、获取想要的内容(以获取服务端口号为例)
由于我配置了两个Tomcat的service服务,因此是循环读取的
public static List<String> readTomcatConfig() {
new IniUtils();
ArrayList<String> portList = new ArrayList<>();
Document document = XMLConfig.getTomcatServerContext();
// 获取根节点
Element root = document.getRootElement();
// 获取所有的子节点
List<Element> elements = root.elements();
// 由于配置了两个service服务,而且是最后两个,因此只要最后两个节点
elements.subList(0,elements.size() - 2).clear();
for (Element element : elements){
Element Connector_config = element.element("Connector");
String port = Connector_config.attribute("port").getValue();
portList.add(port);
}
/**
这里是单个配置的
Document document = XMLConfig.getTomcatServerContext();
Element root = document.getRootElement();
Element Service_config = root.element("Service");
Element Connector_config = Service_config.element("Connector");
String port= Connector_config.attribute("port").getValue();
*/
return portList;
}