package com.wss;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class GPS_GNSS_XML_Color {
//刪除節(jié)點(diǎn)時傳入的參數(shù)
private static String deleteNumber;
//修改節(jié)點(diǎn)時傳入的參數(shù)
private static String updateNumber;
//讀取傳入的路徑,返回一個document對象
public static Document loadInit(String filePath){
Document document = null;
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(filePath));
document.normalize();
return document;
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
return null;
}
}
/**
* 刪除制定的xml
* @param filePath
* @return
*/
public static boolean deleteXML(String filePath){
deleteNumber = "421f481e-790c-41be-91e3-27d215b73ce2";
Document document = loadInit(filePath);
try{
NodeList nodeList = document.getElementsByTagName("color");
for(int i=0; i<nodeList.getLength(); i++){
String number_ = document.getElementsByTagName("number").item(i).getFirstChild().getNodeValue();
//刪除節(jié)點(diǎn)時傳入的參數(shù)
if(number_.equals(deleteNumber)){
Node node = nodeList.item(i);
node.getParentNode().removeChild(node);
saveXML(document, filePath);
}
}
return true;
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
return false;
}
}
/**
* 修改制定的xml
* @param filePath
* @return
*/
public static boolean updateXML(String filePath){
updateNumber = "421f481e-790c-41be-91e3-27d215b73ce2";
//讀取傳入的路徑,返回一個document對象
Document document = loadInit(filePath);
try{
//獲取葉節(jié)點(diǎn)
NodeList nodeList = document.getElementsByTagName("color");
//遍歷葉節(jié)點(diǎn)
for(int i=0; i<nodeList.getLength(); i++){
String number = document.getElementsByTagName("number").item(i).getFirstChild().getNodeValue();
String colorValue = document.getElementsByTagName("colorValue").item(i).getFirstChild().getNodeValue();
Double minValue = Double.parseDouble(document.getElementsByTagName("minValue").item(i).getFirstChild().getNodeValue());
Double maxValue = Double.parseDouble(document.getElementsByTagName("maxValue").item(i).getFirstChild().getNodeValue());
//修改節(jié)點(diǎn)時傳入的參數(shù)
if(number.equals(updateNumber)){
document.getElementsByTagName("colorValue").item(i).getFirstChild().setNodeValue("black");
document.getElementsByTagName("minValue").item(i).getFirstChild().setNodeValue("2222");
document.getElementsByTagName("maxValue").item(i).getFirstChild().setNodeValue("22222");
System.out.println();
}
}
saveXML(document, filePath);
return true;
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
return false;
}
}
/**
* 添加節(jié)點(diǎn)
* @param filePath
* @return
*/
public static boolean addXML(String filePath){
try{
//讀取傳入的路徑,返回一個document對象
Document document = loadInit(filePath);
//創(chuàng)建葉節(jié)點(diǎn)
Element eltColor = document.createElement("color");
Element eltNumber = document.createElement("number");//創(chuàng)建葉節(jié)點(diǎn)的第一個元素
Element eltColorValue = document.createElement("colorValue");//創(chuàng)建葉節(jié)點(diǎn)的第二個元素
Element eltMinValue = document.createElement("minValue");//創(chuàng)建葉節(jié)點(diǎn)的第三個元素
Element eltMaxValue = document.createElement("maxValue");//創(chuàng)建葉節(jié)點(diǎn)的第四個元素
Text number_ = document.createTextNode(UUID.randomUUID().toString());//創(chuàng)建葉節(jié)點(diǎn)的第一個元素下的文本節(jié)點(diǎn)
eltNumber.appendChild(number_);//把該文本節(jié)點(diǎn)加入到葉節(jié)點(diǎn)的第一個元素里面
Text colorValue_ = document.createTextNode("colorValue");//創(chuàng)建葉節(jié)點(diǎn)的第二個元素下的文本節(jié)點(diǎn)
eltColorValue.appendChild(colorValue_);//把該文本節(jié)點(diǎn)加入到葉節(jié)點(diǎn)的第二個元素里面
Text minValue_ = document.createTextNode("100");//創(chuàng)建葉節(jié)點(diǎn)的第三個元素下的文本節(jié)點(diǎn)
eltMinValue.appendChild(minValue_);//把該文本節(jié)點(diǎn)加入到葉節(jié)點(diǎn)的第三個元素里面
Text maxValue_ = document.createTextNode("200");//創(chuàng)建葉節(jié)點(diǎn)的第四個元素下的文本節(jié)點(diǎn)
eltMaxValue.appendChild(maxValue_);//把該文本節(jié)點(diǎn)加入到葉節(jié)點(diǎn)的第四個元素里面
//把葉節(jié)點(diǎn)下的元素加入到葉節(jié)點(diǎn)下
eltColor.appendChild(eltNumber);
eltColor.appendChild(eltColorValue);
eltColor.appendChild(eltMinValue);
eltColor.appendChild(eltMaxValue);
//獲取根節(jié)點(diǎn)
Element eltRoot = document.getDocumentElement();
//把葉節(jié)點(diǎn)加入到根節(jié)點(diǎn)下
eltRoot.appendChild(eltColor);
//更新修改后的源文件
saveXML(document, filePath);
return true;
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
return false;
}
}
/**
* 把修改后的document寫進(jìn)源文件(更新源文件)
* @param document
* @param filePath
* @return
*/
public static boolean saveXML(Document document, String filePath){
try{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filePath));
transformer.transform(source, result);
return true;
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
return false;
}
}
/**
* 獲取xml文件的所有記錄
* @param filePath
* @return
*/
public static List<ColorValue> selectXML(String filePath){
List<ColorValue> colorValueList = new ArrayList<ColorValue>();
try{
//讀取傳入的路徑,返回一個document對象
Document document = loadInit(filePath);
//獲取葉節(jié)點(diǎn)
NodeList nodeList = document.getElementsByTagName("color");
//遍歷葉節(jié)點(diǎn)
for(int i=0; i<nodeList.getLength(); i++){
ColorValue colorValue = new ColorValue();
String number_ = document.getElementsByTagName("number").item(i).getFirstChild().getNodeValue();
String colorValue_ = document.getElementsByTagName("colorValue").item(i).getFirstChild().getNodeValue();
Double minValue_ = Double.parseDouble(document.getElementsByTagName("minValue").item(i).getFirstChild().getNodeValue());
Double maxValue_ = Double.parseDouble(document.getElementsByTagName("maxValue").item(i).getFirstChild().getNodeValue());
colorValue.setNumber(number_);
colorValue.setColorValue(colorValue_);
colorValue.setMinValue(minValue_);
colorValue.setMaxValue(maxValue_);
colorValueList.add(colorValue);
}
return colorValueList;
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
return null;
}
}
}
package com.wss;
public class ColorValue {
private String number;
private String colorValue;
private Double minValue;
private Double maxValue;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColorValue() {
return colorValue;
}
public void setColorValue(String colorValue) {
this.colorValue = colorValue;
}
public Double getMinValue() {
return minValue;
}
public void setMinValue(Double minValue) {
this.minValue = minValue;
}
public Double getMaxValue() {
return maxValue;
}
public void setMaxValue(Double maxValue) {
this.maxValue = maxValue;
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Colors>
<color>
<number>7007b384-fab3-4779-9171-229d0664b6b5</number>
<colorValue>black</colorValue>
<minValue>2222</minValue>
<maxValue>22222</maxValue>
</color>
<color>
<number>421f481e-790c-41be-91e3-27d215b73ce2</number>
<colorValue>colorValue</colorValue>
<minValue>100</minValue>
<maxValue>200</maxValue>
</color>
</Colors>