文档章节

XML--Jaxp-dom解析

H
 HoneyHoney
发布于 2015/06/13 13:01
字数 510
阅读 13
收藏 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
149
0
java默认XML解析器Xerces-J??

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

钟艾一生
2016/11/16
123
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
751
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
221
0
完整理解XML领域(耗费心血,欢迎纠错)

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

xpbug
2013/01/24
0
11

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部