首先,先获取到文档对象

private static Document getDocument(String path) {
//1.创建DocumentBuilderFactory对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//文档构建对象
DocumentBuilder builder = null;
try {
//从工厂对象中获得文档构建对象
builder = factory.newDocumentBuilder();
//用文档构建对象创建文档 参数为xml文件地址
Document d = builder.parse(path);
//简写
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(path);
return d;
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

然后拿到了一个文档树

遍历这个文档树主要用到这些方法

  • getElementsByTagName(string tagname) //返回NodeList 根据元素名查找,没找到也会返回一个长度为0的空列表
  • getChildNodes() // 返回NodeList 返回当前元素的所有直接子元素
  • getElementById() //返回Element 返回具有指定id的元素

    因为xml标签名称都是自定的所以一般使用getElementsByTagName()就够用了
//使用getElementsByTagName获取xml元素
NodeList list= d.getElementsByTagName("Brand");
//循环读取
for (int i = 0; i < list.getLength(); i++) {
//接收列表中的项目并转换为元素 由于NodeList的item返回Node 而Element是Node的子接口,所以可以直接转换
Element element = (Element) list.item(i);
//对获取到的元素进行各种操作
//获取name属性
String name = element.getAttribute("name");
//删除自身
element .getParentNode().removeChild(brand.item(i));
//设置属性
element.setAttribute("id", i + "");
}

同理,多级只需要多重循环即可

//使用getElementsByTagName获取xml元素
NodeList list= d.getElementsByTagName("Brand");
//循环读取
for (int i = 0; i < list.getLength(); i++) {
//接收列表中的项目并转换为元素
Element element = (Element) list.item(i);
...
//第二层
NodeList list2= d.getElementsByTagName("Brand");
for (int i = 0; i < list2.getLength(); i++) {
Element element2 = (Element) list.item(i);
...
}
}

写入待明天更新....

java xml的读取与写入(dom)的更多相关文章

  1. Java使用POI读取和写入Excel指南

    Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...

  2. Java使用POI读取和写入Excel指南(转)

    做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里基于最新的Apache POI 4.0 ...

  3. Java学习-023-Properties 类 XML 配置文件读取及写入源代码

    之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFr ...

  4. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  5. JAVA xml 流方式读取。数据挖掘大文件预处理。

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  6. 使用java进行excel读取和写入

    1:添加处理excel的依赖jar包 <!-- 引入poi,解析workbook视图 --> <dependency> <groupId>org.apache.po ...

  7. Java是如何读取和写入浏览器Cookies的

    首先我们认识下什么是cookies: cookie实际上是一个存在你硬盘里的数据,但是这些数据很特殊,只能由web应用提交给浏览器帮助存储,并且我们还能读取浏览器存在本地的cookie web应用一般 ...

  8. 关于java读取和写入properties配置文件的内容

    一般通过使用流的方式进行读取 代码示例如下: package com.zznode.transmit.util; import java.io.FileInputStream; import java ...

  9. C#中XML的读取

    本文主要介绍在C#中有关XML的读取,写入操作. 1.XML的内容如下: <?xml version="1.0" encoding="utf-8" ?&g ...

随机推荐

  1. javascript中数字的一些常规操作

    1,禁止输入 - (减号.负号) // html <input type="number" class="no-negative"> // js $ ...

  2. Kafka 简易教程

    1.初识概念 Apache Kafka是一个分布式消息发布订阅系统. TopicKafka将消息种子(Feed)分门别类, 每一类的消息称之为话题(Topic). Producer发布消息的对象称之为 ...

  3. 罗列Python标准模块

    文本 1. string:通用字符串操作 2. re:正则表达式操作 3. difflib:差异计算工具 4. textwrap:文本填充 5. unicodedata:Unicode字符数据库 6. ...

  4. 因为对 Docker 不熟悉建了 N 多个 Nginx

    因为对 Docker 不熟悉建了 N 多个 Nginx 一直不停的 docker run nginx 结果出现无数个 nginx. 然后最原来的 nginx 启动不了了. 使用 docker ps - ...

  5. iOS 11 适配UIWebView,页面下移20的问题

    方案1: AppDelegate文件 didFinishLaunchingWithOptions()中添加如下代码 if (@available(iOS 11.0, *)) { [[UIScrollV ...

  6. oralce ROLLUP

    select id,area,stu_type,sum(score) score from students group by rollup(id,area,stu_type) order by id ...

  7. Python学习(四)cPickle的用法

    python中有两个类似的:pickle与cPickle:两者的关系:“cPickle – A faster pickle” pickle模块中的两个主要函数是dump()和load().dump() ...

  8. oracle函数 INITCAP(c1)

    [功能]返回字符串并将字符串的第一个字母变为大写,其它字母小写; [参数]c1字符型表达式 [返回]字符型 [示例] SQL> select initcap('smith abc aBC') u ...

  9. oracle函数 ASCII(x1)

    [功能]:返回字符表达式最左端字符的ASCII 码值. [参数]:x1,字符表达式 [返回]:数值型 [示例] SQL> select ascii('A') A,ascii('a') a,asc ...

  10. SDUT-3332&3333_数据结构实验之栈与队列五:下一较大值

    数据结构实验之栈与队列六:下一较大值 Time Limit: 150 ms Memory Limit: 8000 KiB Problem Description 对于包含n(1<=n<=1 ...