文档章节

XML--Jaxp-dom解析

H
 HoneyHoney
发布于 2015/06/13 13:01
字数 510
阅读 13
收藏 0
点赞 0
评论 0

org.w3c.dom.Document

 使用: DocumentBuilderFactory/DocumentBuilder

对以下xml文件进行操作:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <users>
- <user id="U001">
      <name>张三</name> 
      <age>13</age> 
  </user>
- <user id="U002">
      <name>李四</name> 
      <age>23</age> 
  </user>
- <user id="U003">
      <name>王五</name> 
      <age>15</age> 
  </user>
  </users>

    1:读取所有有用的节点

@Test
 public void test1() throws Exception{
  //1:声明dbf对象
  DocumentBuilderFactory dbf =  DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  //2:解析xml文件,返回dom对象
  Document dom = db.parse("./files/users.xml");
  //3:获取user元素
  NodeList nl = dom.getElementsByTagName("user");
  int len = nl.getLength();
  for(int i=0;i<len;i++){
   Element ele = (Element) nl.item(i);//<user>
   String id = ele.getAttribute("id");
   //以下获取name和age的值
   String name = ele.getElementsByTagName("name").item(0).getTextContent();
   String age = ele.getElementsByTagName("age").item(0).getTextContent();
   System.err.println(id+","+name+","+age);    
  }
 }
 //xml中回车,空格也是元素
 @Test
 public void test2() throws Exception{
  //1:声明dbf对象
  DocumentBuilderFactory dbf =  DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  //2:解析xml文件,返回dom对象
  Document dom = 
db.parse("./files/users.xml");
  //3:获取user元素
  NodeList nl = dom.getElementsByTagName("user");
  //获取第一个usr元素
  Element e = (Element) nl.item(0);
  int len = e.getChildNodes().getLength();// 获取子元素
  System.err.println("个数为:"+len);
 }

    2.写文件:将内存中的内容写入xml文件中

    Transformer

    javax.xml.transform
    类 Transformer

public abstract class Transformer extends Object
此抽象类的实例能够将源树转换为结果树。
 
 @Test
 public void add() throws Exception{
  DocumentBuilderFactory dbf =  DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document dom = db.parse("./files/users.xml");
  //在内在中生成一个元素
  Element userElement =  dom.createElement("user");
  userElement.setAttribute("id", "U005");
  
  Element nameElement = dom.createElement("name");
  nameElement.setTextContent("赵七");
  
  Element ageElement = dom.createElement("age");
  ageElement.setTextContent("88");
  
  userElement.appendChild(nameElement);
  userElement.appendChild(ageElement);
  
  dom.getFirstChild().appendChild(userElement);
  
  //生成一个写文件的对象
  TransformerFactory tsf = TransformerFactory.newInstance();
  Transformer ts = tsf.newTransformer();
  ts.transform(new DOMSource(dom),new StreamResult(new File("./files/users.xml")));
 }

    3.更改

 @Test
 public void update() throws Exception{
  DocumentBuilderFactory dbf =  DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document dom = db.parse("./files/users.xml");
  
  NodeList nl =  dom.getElementsByTagName("user");
  Element last = (Element) nl.item(nl.getLength()-1);
  
  last.getElementsByTagName("name").item(0).setTextContent("王五");
  last.getElementsByTagName("age").item(0).setTextContent("15");
  
  
  //生成一个写文件的对象
  TransformerFactory tsf = TransformerFactory.newInstance();
  Transformer ts = tsf.newTransformer();
  ts.transform(new DOMSource(dom),new StreamResult(new File("./files/users.xml")));
 }

   4.删除

 @Test
 public void delete() throws Exception{
  DocumentBuilderFactory dbf =  DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document dom = db.parse("./files/users.xml");
  
  NodeList nl =  dom.getElementsByTagName("user");
  Element last = (Element) nl.item(nl.getLength()-1);
  
  //删除自己
  last.getParentNode().removeChild(last);
  
  //生成一个写文件的对象
  TransformerFactory tsf = TransformerFactory.newInstance();
  Transformer ts = tsf.newTransformer();
  ts.transform(new DOMSource(dom),new StreamResult(new File("./files/users.xml")));
 }



© 著作权归作者所有

共有 人打赏支持
H
粉丝 0
博文 21
码字总数 6313
作品 0
济南
Android 创建与解析XML(一)—— 概述

Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器、解析器、转换器 API,对 XML 进行解析和转换。 XML,相关有DOM、SAX、JDOM、DOM4J、Xerce...

长平狐 ⋅ 2013/01/06 ⋅ 0

java默认XML解析器Xerces-J??

从书上看到,我按照我的想法理解了下(但是发现有点乱):java默认的XML解析器Xerces-J包含JAXP为DOM和SAX解析方式的一些接口提供了实现接口,而JAXP下的javax.xml.parsers 包则用于获取解析...

钟艾一生 ⋅ 2016/11/16 ⋅ 0

JAVA平台标准组件--JAXP

Java API for XML Processing (JAXP)是与具体实现无关的XML解析转换验证查询API。 JAXP是JAVA平台的标准组件。JAXP1.4已经被包含在JDK6中,JAXP1.6已经被包含在JDK8中。 因为 JSR 206 维护更...

xpen ⋅ 2014/10/09 ⋅ 0

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的 官方W3C标准。DOM是以层次结构组织...

_xiaotudou ⋅ 2014/03/28 ⋅ 0

完整理解XML领域(耗费心血,欢迎纠错)

每个人都知道什么是XML,也知道它的格式.如果深入点理解如何使用XML,可能就不是每个人都知道的了. XML是一种自描述性文档,它的作用是内容的承载,和展示没有任何关系.所以,如何将XML里的数据以...

xpbug ⋅ 2013/01/24 ⋅ 11

【XML系列】详解JDOM解析XML

【XML系列】详解JDOM解析XML 一、前言 JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。...

磊神Ray ⋅ 2011/11/01 ⋅ 0

XML解析方法详解

今日目标:DOM、 SAX、 STAX、 XML解析API 今日重点:JAXP DOM解析 、JAXP SAX解析、XML PULL解析。 XML现在已成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。深入了...

honzhang ⋅ 2017/12/26 ⋅ 0

DOM4J解析XML

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。很多Java软件读写XML都在使用dom4j,Sun公司的JAXM也是用dom4j。Hib...

iborder ⋅ 2016/10/18 ⋅ 0

XML之DOM解析详解

参考文献:http://www.blogjava.net/zzzlyr/articles/314288.html xmljava的解析方式有很多种,我们现在就先看一下关于XML解析中的DOM解析 DOM解析器的接口已经被W3C标准化了。org.w3.dom包包...

hello菜bird ⋅ 2016/01/27 ⋅ 0

dom4j解析XML配置文件

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。在程序中对于读取一些配置文件,一般都采用单例模式来做,比如jdbc数...

酷帅CoolBash ⋅ 2012/09/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 11分钟前 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 14分钟前 ⋅ 0

Nginx + uwsgi @ubuntu

uwsgi 安装 sudo apt-get install python3-pip # 注意 ubuntu python3默认没有安装pippython3 -m pip install uwsgi 代码(test.py) def application(env, start_response): start_res......

袁祾 ⋅ 15分钟前 ⋅ 0

版本控制工具

CSV , SVN , GIT ,VSS

颖伙虫 ⋅ 18分钟前 ⋅ 0

【2018.06.19学习笔记】【linux高级知识 13.1-13.3】

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

lgsxp ⋅ 25分钟前 ⋅ 0

LVM

LVM: 硬盘划分分区成物理卷->物理卷组成卷组->卷组划分逻辑分区。 1.磁盘分区: fdisk /dev/sdb 划分几个主分区 输入t更改每个分区类型为8e(LVM) 使用partprobe生成分区的文件:如/dev/sd...

ZHENG-JY ⋅ 53分钟前 ⋅ 0

彻底删除Microsoft Office的方法

参照此链接彻底删除Office https://support.office.com/zh-cn/article/%e4%bb%8e-pc-%e5%8d%b8%e8%bd%bd-office-9dd49b83-264a-477a-8fcc-2fdf5dbf61d8?ui=zh-CN&rs=zh-CN&ad=CN......

Kampfer ⋅ 今天 ⋅ 0

大盘与个股之间关系

大盘走多:积极出手 顺势加码 大盘走空: 少量出手 退场观望 大盘做头:逆势减码 少量操作 大盘做底 : 小量建仓 小量试单

guozenhua ⋅ 今天 ⋅ 0

Day16 LVM(逻辑卷管理)与磁盘故障小案例

lvm详解 简述 LVM的产生是因为传统的分区一旦分区好后就无法在线扩充空间,也存在一些工具能实现在线扩充空间但是还是会面临数据损坏的风险;传统的分区当分区空间不足时,一般的解决办法是再...

杉下 ⋅ 今天 ⋅ 0

rsync实现多台linux服务器的文件同步

一、首先安装rsync,怎样安装都行,rpm,yum,还是你用源码安装都可以。因为我用的是阿里云的ESC,yum install rsync就ok了。 二、配置rsync服务 1.先建立个同步数据的帐号 123 groupadd r...

在下头真的很硬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部