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

Java使用DOM方式读写XML的更多相关文章

  1. salesforce 零基础学习(三十二)通过Streams和DOM方式读写XML

    有的时候我们需要对XML进行读写操作,常用的XML操作主要有Streams和DOM方式. 一.Streams方式 Streams常用到的类主要有两个XmlStreamReader 以及XmlStrea ...

  2. Java——DOM方式生成XML (转)

    http://blog.csdn.net/u012325167/article/details/50943202 使用DOM方式生成XML文件有如下几步: 首先是创建DOM树(即规定XML文件中的内容 ...

  3. 用JAXP的dom方式解析XML文件

    用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...

  4. 用DOM方式解析XML

    一.用DOM方式解析XML 此例子节点结构如下: 1.获取book节点属性 (1).如果不知道节点的属性,通过 NamedNodeMap attrs = book.getAttributes(); 来 ...

  5. Dom方式解析XML

    public class TestXML { public static void main(String[] args) throws SAXException, IOException { //D ...

  6. 在iOS 开发中用GDataXML(DOM方式)解析xml文件

    因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...

  7. Java&Xml教程(四)使用DOM方式生成XML文件

    在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...

  8. Java&Xml教程(三)使用DOM方式修改XML文件内容

    DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素.删除元素.修改元素值.修改元素属性等操作. 我们的XML文件,内容如下: employee.xml <?xml version= ...

  9. Java&Xml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

随机推荐

  1. docker学习:dockefile解析

    是什么 DockerFile 是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 构建三部曲 编写Dockerfile文件 docker build docker run 文件什么样 ...

  2. MySQL启用SSL连接

    1.手动创建自认证证书 1.1 创建CA证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3600 ...

  3. OpenIddict 登录及详细流程解析

    GitHub上实例都是集成了Identity来实现,我这里去掉了相关东西,实现自定义的登录满足自己的结构要求 服务端配置添加数据库服务以及定时任务服务 builder.Services.AddDbCo ...

  4. Sentry 企业级数据安全解决方案 - Relay 项目配置

    内容整理自官方文档 系列 Sentry 企业级数据安全解决方案 - Relay 入门 Sentry 企业级数据安全解决方案 - Relay 运行模式 Sentry 企业级数据安全解决方案 - Rela ...

  5. python + pymysql连接数据库报“(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)")”

    python + pymysql连接数据库报"(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)&quo ...

  6. Jenkins_创建任务以及定时启动(2)

    一.创建任务 1.点击New Item 2.输入用户,单击Freestyle project,点击OK 3.填写构建步骤,因为是安装在linux上的,所以我们选择Execute shell,随意输入一 ...

  7. spring security 登出操作 详细说明

    1.前言 这里专门 做 spring security 登出操作 的  详细记录 2.操作 (1)目录结构 (2)在security 拦截规则配置文件添加退出登录支持 源码 package com.e ...

  8. HBase环境搭建(hbase1.2.5+zookeeper3.4.6)

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6627857018461880836/ 系统版本,Hadoop已安装完成 Mysql安装完成 Hive版本 Sqoo ...

  9. php反序列化之pop链构造

    本题是某信有一次内部比赛的题目,涉及到pop链的构造问题,所以在这里与大家分享一下 题目 查看源码 逻辑是当参数fn存在且不包含string.zlib.flag这三个字符串时,进行文件包含这里的过滤是 ...

  10. Bootstrap实战 - 注册和登录

    一.介绍 注册和登录在社交和商业网站中是必不可少的一个部分. 二.知识点 2.1 标签页 2.1.1 基础标签页 标签页的使用与导航栏类似,同时都依赖于基础样式 nav,不同的是附加样式变成了 nav ...