好久不用的东西,今天居然被面试官问到了。那既然这样,我们就一起回顾下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. 7打开pycharm_Python+pycharm安装、关联教程
  2. oracle emctl
  3. centos中python2.7被覆盖,yum,python重新安装
  4. 【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解
  5. springboot 热部署的两种方式
  6. NOIP2008提高组(前三题) -SilverN
  7. 关于规划修编标准的问题
  8. innodb 悲观锁 乐观锁_mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁
  9. antdesign 柱状图_ant design pro (十)advanced 图表
  10. pytorch torchvision.transforms.ToTensor
  11. 如何在应用系统中实现数据权限的控制功能
  12. 查询数据总数_Web | Django 与数据库交互,你需要知道的 9 个技巧
  13. 关于使用js的setAttribute和getAttribute取dom属性在ie ff safri下的问题
  14. Spring启动的bean回调函数
  15. OpenWRT安装SIM7600CE 4G模块驱动
  16. 浅谈Service中实现弹出对话框的坑
  17. mit 6.824 lab1A解析
  18. chrome与chromedriver版本对应关系以及官方下载页面
  19. 实战 | 计算器/数码管数字识别 基于OpenCV和EasyOCR/PaddleOCR(附源码)
  20. “魅宅”张春鹏:智能家居的普及还是要依赖线下渠道

热门文章

  1. Bluemix云平台实践: 命令行的艺术CF CLI
  2. Windows Vista各个版本区别详细对比
  3. 【医学图像处理】 8 VTKITK软件开发平台
  4. 安装C4D报错 找不到libmmd.dll文件
  5. 智慧车行预约小程序 v9.1
  6. Pixel 5 Root, 安装Xposed框架, 解锁5G教程
  7. 极客日报第3期:小红书回应 “涉黄内容” 已封禁;iOS 14.2 推送,你更新了吗?
  8. 2021年光明区深港澳科技成果转移转化基地启动资助申报时间及条件,补贴50万
  9. Windows提示Adobe Reader 已停止工作
  10. Base64编码、解码