Java操作XML工具類(lèi)XmlUtil詳解
本文實(shí)例為大家分享了Java操作XML工具類(lèi)的具體代碼,供大家參考,具體內(nèi)容如下
一、代碼
public class XmlUtil {
/**
* 將XML文件輸出到指定的路徑
*
* @param doc
* @param fileName
* @throws Exception
*/
public static void outputXml(Document doc, String fileName)
throws Exception {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(doc);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("生成XML文件成功!");
}
/**
* 生成XML
*
* @param ip
* @return
*/
public static Document generateXml(String ip) {
Document doc = null;
Element root = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.newDocument();
root = doc.createElement("errorDevices");
doc.appendChild(root);
} catch (Exception e) {
e.printStackTrace();
return null;// 如果出現(xiàn)異常,則不再往下執(zhí)行
}
Element element;
element = doc.createElement("errorDevice");
element.setAttribute("ip", ip);
element.setAttribute("date",
StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"));
element.setAttribute("status", "1");
root.appendChild(element);
return doc;
}
/**
* 新增Xml節(jié)點(diǎn)
*
* @param ip
* @param fileName
* @return
* @throws FileNotFoundException
* @throws TransformerException
*/
public static void toWrite(String filename, String ip)
throws FileNotFoundException, TransformerException {
String date = StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
Document doc = null;
try {
builder = factory.newDocumentBuilder();
doc = builder.parse(new File(filename));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
NodeList links = doc.getElementsByTagName("errorDevice");
if (links.getLength() > 0) {
for (int i = 0; i < links.getLength(); i++) {
Node nd = links.item(i);
Node catParent = nd.getParentNode();
Element ele = (Element) nd;
String url = ele.getAttribute("ip");
if (url.equals(ip)) {
// ele.setAttribute("date", date);
catParent.removeChild(nd);
}
}
}
Element element = doc.createElement("errorDevice");
element.setAttribute("ip", ip);
element.setAttribute("date",
StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"));
element.setAttribute("status", "1");
doc.getDocumentElement().appendChild(element);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(doc);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("新增XML節(jié)點(diǎn)成功!");
}
/**
* 讀取XML
*
* @param filename
* @return
*/
public static List<Map> readXml(String filename){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
Document doc = null;
try {
builder = factory.newDocumentBuilder();
doc = builder.parse(new File(filename));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
NodeList links = doc.getElementsByTagName("errorDevice");
List<Map> list = new ArrayList<Map>();
for(int i = 0; i< links.getLength() ; i ++){
Element node = (Element)links.item(i);
Map map = new HashMap();
map.put(node.getAttribute("ip"), node.getAttribute("date"));
list.add(map);
}
return list;
}
}
二、演示XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <errorDevices> <errorDevice date="2017-03-13 12:54:16" ip="20.100.156.42" status="1"/> <errorDevice date="2017-03-13 12:54:56" ip="20.100.156.41" status="1"/> </errorDevices>
三、最終效果圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java 計(jì)算中位數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了java 計(jì)算中位數(shù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(53)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-08-08
Java實(shí)現(xiàn)中國(guó)象棋的示例代碼
中國(guó)象棋是起源于中國(guó)的一種棋,屬于二人對(duì)抗性游戲的一種,在中國(guó)有著悠久的歷史。由于用具簡(jiǎn)單,趣味性強(qiáng),成為流行極為廣泛的棋藝活動(dòng)。本文將利用Java實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下2022-02-02
淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的
本文主要介紹了MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
SpringMVC使用JsonView針對(duì)統(tǒng)一實(shí)體返回不同信息
這篇文章主要為大家介紹了SpringMVC使用JsonView針對(duì)統(tǒng)一實(shí)體返回不同信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
java中線(xiàn)程安全的list詳細(xì)特性和用法
這篇文章主要給大家介紹了關(guān)于java中線(xiàn)程安全的list詳細(xì)特性和用法的相關(guān)資料,Java中有多種線(xiàn)程安全的List,其中比較常用的有Vector、Collections.synchronizedList()和CopyOnWriteArrayList三種方式,需要的朋友可以參考下2024-03-03
JAVA基于Arrays.sort()實(shí)現(xiàn)數(shù)組升序和降序
這篇文章主要介紹了JAVA基于Arrays.sort()實(shí)現(xiàn)數(shù)組升序和降序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

