一、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. 我踩过的python的坑

    1. string中Template用法 变量名不能是${tradeDate+1}, python无法识别其为变量,应改为 ${tradeDate1} 变量替换的语句:data_new = Templ ...

  2. Hadoop HA(高可用) 详细安装步骤

    什么是HA? HA是High Availability的简写,即高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用.(简言之,有两台机器 ...

  3. spring boot 解决 跨域 的两种方法 -- 前后端分离

    1.前言 以前做项目 ,基本上是使用 MVC 模式 ,使得视图与模型绑定 ,前后端地址与端口都一样 , 但是现在有些需求 ,需要暴露给外网访问 ,那么这就出现了个跨域问题 ,与同源原则冲突, 造成访问 ...

  4. linux 三剑客(持续更新)排版后续再说,边学边记笔记

    切记:seq命令用于产生从某个数到另外一个数之间的所有整数.sed才是处理文本的命令 在遇到扩展符号时,需要添加特定参数,| () +[] 为扩展符号时,必须添加参数 egrep/grep -E  s ...

  5. MySQL索引失效之隐式转换

    常见索引失效: 1. 条件索引字段"不干净":函数操作.运算操作 2. 隐式类型转换:字符串转数值:其他类型转换 3. 隐式字符编码转换:按字符编码数据长度大的方向转换,避免数据截 ...

  6. 对极验geetest滑块验证码图片还原算法的研究

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  7. TextBox,RichTextBox设置行高

    /// <summary> /// 设置行距 /// </summary> /// <param name="ctl">控件</param ...

  8. java string 转化为json_java String 转Json报错

    缺少jar包依赖: java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean 缺少commons-beanutils- ...

  9. java类的反射机制

    1.获得一个类的类对象有哪些方式? - 方法1:类型.class,例如:String.class- 方法2:对象.getClass(),例如:"hello".getClass()- ...

  10. java-异常-异常注意事项

    1 package p1.exception; 2 3 /* 4 * 异常的注意事项: 5 * 6 * 1,子类在覆盖父类方法时,父类的方法如果抛出了异常, 7 * 那么子类的方法只能抛出父类的异常或 ...