1. 創建並寫入XML
public static void writeXML(String filename){
try {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("PortConfig");
Element ePort;
ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portBloodpress");
ePort.addAttribute("Portnumber", "COM12");
ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portWah");
ePort.addAttribute("Portnumber", "COM14");
ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portBloodsugar");
ePort.addAttribute("Portnumber", "COM16");
ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portBloodfat");
ePort.addAttribute("Portnumber", "COM18");
ePort = root.addElement("Port");
ePort.addAttribute("Portname", "portUric");
ePort.addAttribute("Portnumber", "COM20");
OutputFormat format = new OutputFormat(" ", true);
XMLWriter output = new XMLWriter(new FileWriter(new File(filename)), format);
output.write(document);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
首先用DocumentHelper創建一個Document對象,然後給Document添加一個Element,也就是根Element;然後可以在這個根Element下面添加若干個Element,每一個Element用addAttribute()添加了屬性名稱和屬性值;最後,使用XMLWriter把Document寫入文件。
2. 讀取並解析XML
public static void readXML(String filename){
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(filename);
// 獲取根節點
Element portConfig = document.getRootElement();
for (Iterator i = portConfig.elementIterator(); i.hasNext();) {
Element port = (Element) i.next();
String aname = port.attributeValue("Portname");
String avalue = port.attributeValue("Portnumber");
if (aname.equals("portBloodpress")){
Constant.portBloodpress = avalue;
}
else if (aname.equals("portWah")){
Constant.portWah = avalue;
}
else if (aname.equals("portBloodsugar")){
Constant.portBloodsugar = avalue;
}
else if (aname.equals("portBloodfat")){
Constant.portBloodfat = avalue;
}
else if (aname.equals("portUric")){
Constant.portUric = avalue;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
首先創建一個SAXReader,用這個SAXReader讀出一個Document;然後獲得這個Document的根Element,迭代獲得根Element下面的每一個Element,對每一個Element,使用attributeValue()獲得它的屬性值。
3. 更新XML
public static void updateXML(String filename){
try {
File f = new File(filename);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(curDir + "\\port_config.xml");
// 獲取根節點
Element portConfig = document.getRootElement();
for (Iterator i = portConfig.elementIterator(); i.hasNext();) {
Element port = (Element) i.next();
String aname = port.attributeValue("Portname");
if (aname.equals("portBloodpress")){
port.setAttributeValue("Portnumber", Constant.portBloodpress);
}
else if (aname.equals("portWah")){
port.setAttributeValue("Portnumber", Constant.portWah);
}
else if (aname.equals("portBloodsugar")){
port.setAttributeValue("Portnumber", Constant.portBloodsugar);
}
else if (aname.equals("portBloodfat")){
port.setAttributeValue("Portnumber", Constant.portBloodfat);
}
else if (aname.equals("portUric")){
port.setAttributeValue("Portnumber", Constant.portUric);
}
}
XMLWriter output = new XMLWriter(new FileWriter(new File(curDir + "\\port_config.xml")));
output.write(document);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
更新和讀取的過程差不多,只是對需要更新的屬性用setAttributeValue()方法更新,最後再用XMLWriter寫入文件。
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<PortConfig>
<Port Portname="portBloodpress" Portnumber="COM126"/>
<Port Portname="portWah" Portnumber="COM146"/>
<Port Portname="portBloodsugar" Portnumber="COM166"/>
<Port Portname="portBloodfat" Portnumber="COM186"/>
<Port Portname="portUric" Portnumber="COM206"/>
</PortConfig>