一、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")));

最新文章

  1. C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
  2. PHP-Redis扩展使用手册(一)
  3. 3D 生物打印血管成功植入恒河猴体内
  4. Codeforces Round #370 (Div. 2) C
  5. nodejs开发阶段利器supervisor
  6. ModelAndView使用方法
  7. 27个Jupyter快捷键、技巧(原英文版)
  8. Recall(检出率)和 Precision(准确性)
  9. 【转载】__name__ == &quot;__main__&quot;: 你认识我么?
  10. C#对话框的使用
  11. input 光标在 chrome下不兼容 解决方案
  12. js收藏代码
  13. C#中使用双缓冲来避免绘制图像过程中闪烁
  14. SQL Server 备份到网络盘网络映射盘
  15. python 面向对象编程(高级篇)
  16. linux 将自己的服务添加到系统service服务
  17. vue js 在组件中对数组使用splice() 遇到的坑。。。
  18. c# 控件的基类——Control
  19. 转 php简单伪静态实例
  20. 手动整合实现SSH项目开发02

热门文章

  1. Windows Server 2016 服务器安装IIS
  2. MySQL数据库常用命令汇总
  3. Android 摄像头预览悬浮窗
  4. mysql编译报错
  5. STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)
  6. String 既然能做性能调优,我直呼内行
  7. python 面向对象:类方法&amp;静态方法
  8. js 模块化 -- export 时 一个默认和多个默认的写法
  9. RabbitMQ除开RPC的五种消模型----原生API
  10. scanf报错问题