文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
1
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部