Java操作XML工具类XmlUtil详解

 更新时间:2018年12月21日 14:52:26   作者:u010823625  
这篇文章主要为大家详细介绍了Java操作XML工具类XmlUtil的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java操作XML工具类的具体代码,供大家参考,具体内容如下

一、代码

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;// 如果出现异常,则不再往下执行
 }
 
 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节点
 * 
 * @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节点成功!");
 }
 
 /**
 * 读取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>

三、最终效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java jdk安装及javac命令无效解决方案

    Java jdk安装及javac命令无效解决方案

    这篇文章主要介绍了Java jdk安装及javac命令无效解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 浅谈Java动态代理的实现

    浅谈Java动态代理的实现

    最近,小组同事做代码改造时,使用到了动态代理,自己阅读时,发现对代理这种设计模式都不怎么清楚,导致理解代码也很困难 自己唯一能看懂的,大概就是handler中的invoke方法 ,文中作出了非常详细的介绍,需要的朋友可以参考下
    2021-05-05
  • Java后端接入微信小程序实现登录功能

    Java后端接入微信小程序实现登录功能

    这篇文章主要介绍了Java如何在后端接入微信小程序从而实现登录功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-06-06
  • SpringBoot跨域问题的五种解决方式

    SpringBoot跨域问题的五种解决方式

    前后端分离开发中,跨域问题是很常见的一种问题,下面这篇文章主要给大家介绍了关于SpringBoot跨域问题的五种解决方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • SpringBoot实现MapperScan添加动态配置(占位符)

    SpringBoot实现MapperScan添加动态配置(占位符)

    这篇文章主要介绍了SpringBoot实现MapperScan添加动态配置(占位符),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • SpringBoot使用Graylog日志收集的实现示例

    SpringBoot使用Graylog日志收集的实现示例

    Graylog是一个生产级别的日志收集系统,集成Mongo和Elasticsearch进行日志收集,这篇文章主要介绍了SpringBoot使用Graylog日志收集的实现示例,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Springboot jpa @Column命名大小写问题及解决

    Springboot jpa @Column命名大小写问题及解决

    这篇文章主要介绍了Springboot jpa @Column命名大小写问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • SpringBoot实现API接口多版本支持的示例代码

    SpringBoot实现API接口多版本支持的示例代码

    这篇文章主要介绍了SpringBoot实现API接口多版本支持的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • java外部类与内部类的关系详解

    java外部类与内部类的关系详解

    本文详细讲解了java外部类与内部类的关系,用代码演示了外部类调用内部类的方法。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Java实现接月饼小游戏的示例代码

    Java实现接月饼小游戏的示例代码

    本文将用Java语言自制一个小游戏:《接月饼小游戏》,游戏规则为不要被月亮砸到,尽可能地多接月饼。文中的实现代码讲解清晰,感兴趣的可以动手试一试
    2022-02-02

最新评论