如何在Java中使用XmlUtil工具类

发布时间:2021-06-08 17:10:27 作者:Leah
来源:亿速云 阅读:504

如何在Java中使用XmlUtil工具类?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、代码

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中使用XmlUtil工具类

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. 如如何使用journalctl命令?
  2. 如何在Java中使用Collections工具类排序List集合

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:如何在Android中动态添加碎片

下一篇:如何在Maven中实现聚合和Parent继承

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》