博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java使用DOM方式读写XML
阅读量:4322 次
发布时间:2019-06-06

本文共 3097 字,大约阅读时间需要 10 分钟。

一、DOM读取

import ***;

public class ReadXML {

  public static void main(String[] args) {

    try {
      //DOM
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      Document document = builder.parse(new File("languages.xml"));
      Element root = document.getDocumentElement();
      System.out.println("cat="+root.getAttribute("cat"));
      NodeList list = root.getElementsByTagName("lan");
      for (int i = 0; i < list.getLength(); i++) {
        Element lan = (Element) list.item(i);
        System.out.println("---------------");
        System.out.println("id="+lan.getAttribute("id"));
        NodeList clist = lan.getChildNodes();
        for (int j = 0; j < clist.getLength(); j++) {
          Node c = clist.item(j);
          if (c instanceof Element) {//这一行的作用是将元素键的回车换行等不可见的元素如#text去掉
            System.out.println(c.getNodeName()+"="+c.getTextContent());
          }
        }
      }
    } catch (**){...}

}

 

xml文件如下

<?xml version="1.0" encoding="UTF-8"?>

<Languages cat="it">
  <lan id="1">
  <name>Java</name>
  <ide>Eclipse</ide>
  </lan>
  <lan id="2">
  <name>Swift</name>
  <ide>Xcode</ide>
  </lan>
  <lan id="3">
  <name>C#</name>
  <ide>Visual Studio</ide>
  </lan>
</Languages>

 

二、DOM创建XML

  //DOM

  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

  DocumentBuilder builder = factory.newDocumentBuilder();
  Document document = builder.newDocument();
  Element root = document.createElement("Languages");
  root.setAttribute("cat", "it");
  Element lan1 = document.createElement("lan");
  lan1.setAttribute("id", "1");
  Element name1 = document.createElement("name");
  name1.setTextContent("Java");
  Element ide1 = document.createElement("ide");
  ide1.setTextContent("Eclipse");
  lan1.appendChild(name1);
  lan1.appendChild(ide1);
  Element lan2 = document.createElement("lan");
  lan2.setAttribute("id", "2");
  Element name2 = document.createElement("name");
  name2.setTextContent("Swift");
  Element ide2 = document.createElement("ide");
  ide2.setTextContent("XCode");
  lan2.appendChild(name2);
  lan2.appendChild(ide2);
  Element lan3 = document.createElement("lan");
  lan3.setAttribute("id", "3");
  Element name3 = document.createElement("name");
  name3.setTextContent("C#");
  Element ide3 = document.createElement("ide");
  ide3.setTextContent("Visual Studio");
  lan3.appendChild(name3);
  lan3.appendChild(ide3);
  root.appendChild(lan1);
  root.appendChild(lan2);
  root.appendChild(lan3);
  document.appendChild(root);
  //-------------
  TransformerFactory transformerFactory = TransformerFactory.newInstance();
  Transformer transformer = transformerFactory.newTransformer();
  transformer.setOutputProperty("encoding", "UTF-8");
  StringWriter writer = new StringWriter();
  transformer.transform(new DOMSource(document), new StreamResult(writer));
  System.out.println(writer.toString());
  transformer.transform(new DOMSource(document), new StreamResult(new File("newxml.xml")));

转载于:https://www.cnblogs.com/byron0918/p/4681729.html

你可能感兴趣的文章
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>
C#——winform
查看>>
CSS3 transform制作的漂亮的滚动式导航
查看>>
《小强升职记——时间管理故事书》读书笔记
查看>>
Alpha 冲刺(3/10)
查看>>
Kaldi中的Chain模型
查看>>
spring中的ResourceBundleMessageSource使用和测试示例
查看>>
css规范 - bem
查看>>
电梯调度程序的UI设计
查看>>
转自 zera php中extends和implements的区别
查看>>
Array.of使用实例
查看>>
【Luogu】P2498拯救小云公主(spfa)
查看>>
如何获取网站icon
查看>>
几种排序写法
查看>>
java 多线程的应用场景
查看>>
dell support
查看>>
转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决...
查看>>
MTK android 设置里 "关于手机" 信息参数修改
查看>>
单变量微积分笔记6——线性近似和二阶近似
查看>>