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

