Java操作XML工具類XmlUtil詳解
更新時間:2018年12月21日 14:52:26 作者:u010823625
這篇文章主要為大家詳細(xì)介紹了Java操作XML工具類XmlUtil的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Java操作XML工具類的具體代碼,供大家參考,具體內(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>
三、最終效果圖
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)MapperScan添加動態(tài)配置(占位符)
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)MapperScan添加動態(tài)配置(占位符),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。2022-01-01SpringBoot使用Graylog日志收集的實(shí)現(xiàn)示例
Graylog是一個生產(chǎn)級別的日志收集系統(tǒng),集成Mongo和Elasticsearch進(jìn)行日志收集,這篇文章主要介紹了SpringBoot使用Graylog日志收集的實(shí)現(xiàn)示例,感興趣的小伙伴們可以參考一下2019-04-04Springboot jpa @Column命名大小寫問題及解決
這篇文章主要介紹了Springboot jpa @Column命名大小寫問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10SpringBoot實(shí)現(xiàn)API接口多版本支持的示例代碼
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)API接口多版本支持的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10