好久不用的东西,今天居然被面试官问到了。那既然这样,我们就一起回顾下java解析xml文件的几种方式吧。

DOM解析

dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手。

User.xml文件

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Users name="users"><User id="1" name="user1"><name>saber</name><age>18</age><sex>女</sex><emal>1426733135@saber.com</emal><a href="www.saber.com">saber的页面</a></User><User id="2" name="user2"><name>lader</name><age>19</age><sex>男</sex><emal>1426733135@saber.com</emal><a href="www.saber.com">saber的页面</a></User></Users>

获取document文档对象

 private Document document;//声明document public void getDocument(){//获取document工厂beanDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();try {DocumentBuilder documentBuilder = factory.newDocumentBuilder();document = documentBuilder.parse("User.xml");} catch (Exception e) {throw new RuntimeException(e);}}

获取xml元素

    public void showInfo(){NodeList users = document.getElementsByTagName("User");for (int i =0;i<users.getLength();i++){Element user=(Element) users.item(i);NodeList childNodes = user.getChildNodes();for (int j = 0;j<childNodes.getLength();j++){Node item =  childNodes.item(j);System.out.println(item.getTextContent());}System.out.println("---------------------------");}NodeList div=document.getElementsByTagName("div");NodeList divChildren=div.item(0).getChildNodes();System.out.println(divChildren.item(0).getTextContent());//或者// System.out.println(document.getElementsByTagName("span").item(0).getTextContent());}

编辑xml元素

  public void deleteElement(){NodeList divs= document.getElementsByTagName("div");Node div=divs.item(0);//先找到自己的父节点,然后删除指定的子节点div.getParentNode().removeChild(div);saveXML();}public void updateElement(){Element span=(Element)document.getElementsByTagName("span").item(0);span.setAttribute("class","index");if(!span.hasAttribute("id")){span.setAttribute("id","index");}span.setTextContent("DOM解析也不过如此");saveXML();}

对dom元素进行修改后一定得保存修改,也就是使用流将修改的内容重新输出到xml文件中

    public void saveXML(){TransformerFactory factory =TransformerFactory.newInstance();factory.setAttribute("indent-number",4);//设置缩进4个空格try {Transformer transformer=factory.newTransformer();transformer.setOutputProperty(OutputKeys.ENCODING,"utf-8");//设置字符编码transformer.setOutputProperty(OutputKeys.INDENT,"YES");//设置是否支持缩进DOMSource domSource=new DOMSource(document);//封装documentOutputStream out=new FileOutputStream("User.xml");StreamResult streamResult=new StreamResult(new OutputStreamWriter(out,"utf-8"));transformer.transform(domSource,streamResult);//更新修改} catch (Exception e) {throw new RuntimeException(e);}}

DOM4J解析请看下篇文章,java解析xml文件的几种方式(DOM4J解析)

java解析xml文件的几种方式(DOM解析)相关推荐

  1. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  2. java处理解析xml文件的几种方法及每种方法的区别

    文章目录 了解xml xml文件的结构 **特殊处理** **CDATA** 强烈建议 处理xml文件的几种方式 认识Document对象 解析xml文档 该选择哪种方式解析 DOM解析xml文件 D ...

  3. C# 读取XML文件的几种方式

    在开发过程中,我们有时会需要保存到本地一些结构化数据或者配置信息,这时就可以选择用xml文件.当然xml的用途也不仅仅是这些. 这一篇来谈一谈关于读取xml文件的几种方式: 我们有以下两个文件,一个是 ...

  4. java读取csv文件的两种方式

    java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...

  5. 映射Mapper.xml文件的几种方式

    第一种: mybatis-config.xml配置文件中的格式: <mappers><mapper resource="org/mybatis/builder/Author ...

  6. java xml导出_java 导出xml文件的四种方式

    public class CreateXML { //DOM方式创建XML文件 public void DOMcreateXML() { DocumentBuilderFactory factory ...

  7. 解析xml文件的几种方法和原理

    第一种方法 对象模型 API 定义了层次化对象模型来表示 XML 文档.换句话说,对应 XML 语法中的每个概念定义相应的类:元素.属性.实体.文档.解析器读入 XML 文档的时候,建立 XML 语法 ...

  8. java dom解析xml路径中文_Java如何基于DOM解析xml文件

    一.Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath 此文针对其中的DOM方法具体展开介绍及代码分析 sax.dom是两种对xml文档进行解析的方法(没有具体实 ...

  9. 解析xml文件的几种技术

    1. 解析xml的几种技术 1.dom4j 2.sax 3.jaxb 4.jdom 5.dom 1.dom4j     dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的. ...

最新文章

  1. AS3版本的MaxRects算法测试
  2. table合并单元格_element ui el-table 合并单元格
  3. 6.计算机在信息技术中的地位,信息技术在教育中的作用与地位
  4. JavaScript面向对象 - 严格模式
  5. java日期减去天数得日期_Java日期添加天数,减去天数,日历
  6. [WPF自定义控件库]使用WindowChrome自定义RibbonWindow
  7. A311D项目开发总结
  8. android 手势输入法,基于触摸屏的手势输入法
  9. 在SCI-Hub上下载国外论文
  10. 安卓修改软件安装时间_[地质勘察]理正工程地质勘察CAD9.0PB3软件安装教程
  11. 2022 SpeechHome 语音技术研讨会-回顾
  12. 中间件-RabbitMQ学习笔记
  13. 一张图带你看完图论第一章(包含定义、定理、公式、推导证明和例题)
  14. 通用技术课件_优化—让我们做得更好 | 高中通用技术优质课展示
  15. Openstack 安装之 Swift
  16. Swagger-ui.html页面简单的修改
  17. Linux软件包管理和系统网络3
  18. Gos ——BIOS与继承者MBR
  19. idea 快速生成接口文档
  20. Nginx反向代理,通过域名直接访问指定的端口,比如8080

热门文章

  1. 云原生数据库如荼如火,未来可期
  2. 【Windows】IE11中添加网址到兼容性视图列表无法保存的解决方法
  3. 人工智能(PythonWeb)—— JS
  4. 编写宠物dog类python_第 9 章 类
  5. 让我们如此享受的慢性毒药
  6. vuedevtools工具(2023官网下载)
  7. 开便利店可以实现财富自由吗?
  8. 开发微信小程序碰到的 IIS 问题
  9. iPhone不为人知的功能常用技巧,看完后才发现很多用iPhone的人实在是愧对乔布斯! - imsoft.cnblogs...
  10. 陈二狗的妖孽人生经典语录