java解析xml文件的几种方式(DOM解析)
好久不用的东西,今天居然被面试官问到了。那既然这样,我们就一起回顾下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解析)相关推荐
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- java处理解析xml文件的几种方法及每种方法的区别
文章目录 了解xml xml文件的结构 **特殊处理** **CDATA** 强烈建议 处理xml文件的几种方式 认识Document对象 解析xml文档 该选择哪种方式解析 DOM解析xml文件 D ...
- C# 读取XML文件的几种方式
在开发过程中,我们有时会需要保存到本地一些结构化数据或者配置信息,这时就可以选择用xml文件.当然xml的用途也不仅仅是这些. 这一篇来谈一谈关于读取xml文件的几种方式: 我们有以下两个文件,一个是 ...
- java读取csv文件的两种方式
java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...
- 映射Mapper.xml文件的几种方式
第一种: mybatis-config.xml配置文件中的格式: <mappers><mapper resource="org/mybatis/builder/Author ...
- java xml导出_java 导出xml文件的四种方式
public class CreateXML { //DOM方式创建XML文件 public void DOMcreateXML() { DocumentBuilderFactory factory ...
- 解析xml文件的几种方法和原理
第一种方法 对象模型 API 定义了层次化对象模型来表示 XML 文档.换句话说,对应 XML 语法中的每个概念定义相应的类:元素.属性.实体.文档.解析器读入 XML 文档的时候,建立 XML 语法 ...
- java dom解析xml路径中文_Java如何基于DOM解析xml文件
一.Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath 此文针对其中的DOM方法具体展开介绍及代码分析 sax.dom是两种对xml文档进行解析的方法(没有具体实 ...
- 解析xml文件的几种技术
1. 解析xml的几种技术 1.dom4j 2.sax 3.jaxb 4.jdom 5.dom 1.dom4j dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的. ...
最新文章
- 7打开pycharm_Python+pycharm安装、关联教程
- oracle emctl
- centos中python2.7被覆盖,yum,python重新安装
- 【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解
- springboot 热部署的两种方式
- NOIP2008提高组(前三题) -SilverN
- 关于规划修编标准的问题
- innodb 悲观锁 乐观锁_mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁
- antdesign 柱状图_ant design pro (十)advanced 图表
- pytorch torchvision.transforms.ToTensor
- 如何在应用系统中实现数据权限的控制功能
- 查询数据总数_Web | Django 与数据库交互,你需要知道的 9 个技巧
- 关于使用js的setAttribute和getAttribute取dom属性在ie ff safri下的问题
- Spring启动的bean回调函数
- OpenWRT安装SIM7600CE 4G模块驱动
- 浅谈Service中实现弹出对话框的坑
- mit 6.824 lab1A解析
- chrome与chromedriver版本对应关系以及官方下载页面
- 实战 | 计算器/数码管数字识别 基于OpenCV和EasyOCR/PaddleOCR(附源码)
- “魅宅”张春鹏:智能家居的普及还是要依赖线下渠道
热门文章
- Bluemix云平台实践: 命令行的艺术CF CLI
- Windows Vista各个版本区别详细对比
- 【医学图像处理】 8 VTKITK软件开发平台
- 安装C4D报错 找不到libmmd.dll文件
- 智慧车行预约小程序 v9.1
- Pixel 5 Root, 安装Xposed框架, 解锁5G教程
- 极客日报第3期:小红书回应 “涉黄内容” 已封禁;iOS 14.2 推送,你更新了吗?
- 2021年光明区深港澳科技成果转移转化基地启动资助申报时间及条件,补贴50万
- Windows提示Adobe Reader 已停止工作
- Base64编码、解码