首先,先获取到文档对象

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. 块级元素及内联元素对margin、padding的态度

    1.块级元素 margin:跟标准一样,设置该块级元素边框与同级兄弟元素或者父元素的距离,俗称外边距. padding:先延伸边框(也就是优先改变元素尺寸而不动元素中内容的位置),当边框碰到父元素的边 ...

  2. oracle函数 RAWTOHEX(c1)

    [功能]将一个二进制构成的字符串转换为十六进制 [参数]c1,二进制的字符串 [返回]字符串 [示例] select RAWTOHEX('A123')  from dual;

  3. cume_dist(),允许并列名次、复制名次自动空缺,取并列后较大名次,结果如22355778……

    将score按ID分组排名:cume_dist() over(partition by id order by score desc)*sum(1) over(partition by id) 将sc ...

  4. 14.libgdx的一些坑记录(持续更新)

    1. internal的文件路径 无法用list获取目录下文件     2.动态打包散图无法放入资源管理器,只能在资源加载器打包后的散图再合成打包,但都不如提前打包 3.资源加载器读入以texture ...

  5. Java发送邮件的工具类

    package com.csice.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...

  6. 网站域名加WWW与不加WWW区别

    不知道站长童鞋们有没有注意到,很多网站在打开时,地址栏里的域名有的带有“www.”,而有的网站前面则没有带“www.”这其中有什么区别呢?作为一个新站长,我什么都不懂,就在百度上搜了一艘,也没找到一个 ...

  7. laravel5.4 前后台未登陆,跳转到各自的页面

    https://www.imooc.com/wenda/detail/378208?t=266634 laravel我做了前后台登陆,后台未登录跳转到前台登陆页面了. 我想让后台未登入跳转到后台登陆页 ...

  8. Top 10 open source projects of 2015

    Top 10 open source projects of 2015 Posted 15 Dec 2015Jen Wike Huger (Red Hat)Feed 188 up 31 comment ...

  9. django 中models表的多对一,多对多的理解

    django 表的理解 好处:设计的好,会清晰,易于理解和维护,后期开发事半功倍,一目了然. 1. 一对一的表,两表的属性实际上完全可以合并成一个表,共用一个主键即可: 2. 一对多的表,可以设中间关 ...

  10. zoj 1633 Big String

    Big String Time Limit: 2 Seconds Memory Limit: 65536 KB We will construct an infinitely long string ...