1.导入jar 包
<!-- https://mvnrepository.com/artifact/xml-apis/xml-apis -->
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
2.编写代码
public class SettingDoc {
private Document doc;
private String path;
/**
* 单例模式
*/
private static SettingDoc instance;
private SettingDoc() {
}
/**
* 创建实例
* @return
*/
public static SettingDoc getInstance() {
if (instance == null) {
synchronized (SettingDoc.class) {
if(instance == null) {
instance = new SettingDoc();
// ProjectManager projectManager =ProjectManager.getInstance();
// Project[] projects = projectManager.getOpenProjects();
instance.path = "setting.xml";
// if(projects.length > 0) {
// instance.path = projects[0].getBasePath().toString() + "/setting.xml";
// }
File file = new File(instance.path);
System.out.println(file.getAbsolutePath());
if (!file.exists()) {
try {
file.createNewFile();
PrintWriter printWriter = new PrintWriter(new FileWriter(file, true), false);//第二个参数为true,从文件末尾写入 为false则从开头写入
printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<settings></settings>");
printWriter.close();//记得关闭输入流
} catch (IOException e) {
e.printStackTrace();
}
}
SAXReader reader = new SAXReader();
try {
instance.doc = reader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
}
return instance;
}
public Document getDoc() {
return doc;
}
public Node findElement(Node node, String nodeName) {
if (nodeName == null || nodeName.trim().equals("") || node == null) {
return null;
}
if (nodeName.equals(node.getName())) {
return node;
}
if (node instanceof Element) {
Element element = (Element) node;
if (element.nodeCount() > 0) {
for (int i = 0; i < element.nodeCount(); i++) {
Node result = findElement(element.node(i), nodeName);
if (result != null)
return result;
}
return null;
}
}
return null;
}
public Node findElement(String nodeName) {
return findElement(doc.getRootElement(), nodeName);
}
public Node findElementByNodePath(String nodePath){
if(nodePath == null||nodePath.trim().equals("")){
return null;
}
String[] nodeNames = nodePath.split("/");
int i = 0;
if(nodeNames.length > 1 &&"".equals(nodeNames[0])){
i = 1;
}
Element element = null;
for(int j = 0;i<nodeNames.length;i++,j++){
if(j == 0)
element = doc.getRootElement();
else
element = element.element(nodeNames[i]);
if(element == null){
return null;
}
}
return element;
}
/**
* 判断是否有某个结点
* @param nodeName
* @return
*/
public boolean hasNode(String nodeName) {
Node node = findElement(doc.getRootElement(), nodeName);
return node != null;
}
/**
* 保存数据到xml文档
*/
public void save() {
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
XMLWriter writer = null;
try {
writer = new XMLWriter(new FileOutputStream(path), format);
writer.write(doc);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SettingDoc settingDoc = SettingDoc.getInstance();
System.out.println(settingDoc.findElementByNodePath("/settings/filePath/controller").getText());
}
}