文档章节

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
159
0
java默认XML解析器Xerces-J??

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

钟艾一生
2016/11/16
140
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

没有更多内容

加载失败,请刷新页面

加载更多

数字3为分隔

http://www.fly63.com/article/detial/221

西园里的猫
13分钟前
2
0
文本处理工具 grep awk sed完全解读

文本处理工具 grep awk sed完全解读 正则表达式单字符 1特定字符 : 某个具体的字符 'a' 2范围内字符 : [a-zA-Z] 3任意字符 : . // grep . file // 如果点放到中括号中[.] 或者用反斜杠'\.' ...

BakerZhu
13分钟前
2
0
Centos 7 JDK、Tomcat9 安装并配置

Centos 7 JDK、Tomcat9 安装并配置 我是一座离岛 关注 2017.04.10 08:16* 字数 699 阅读 3442评论 0喜欢 1 一、JDK 安装 1.安装wget yum -y install wget 2.下载,输入指令 wget --no-chec...

linjin200
20分钟前
1
0
Spring boot遇到的问题

2018年12月11日 Ver:2.0.2升级到2.1.1文件上传遇到问题 The method setMaxFileSize(String) from the type MultipartConfigFactory is deprecated 是不是就不用设置了?...

夏碌冬藏
28分钟前
1
0
Spark sql操作Hive

这里说的是最简便的方法,通过Spark sql直接操作hive。前提是hive-site.xml等配置文件已经在Spark集群配置好。 val logger = LoggerFactory.getLogger(SevsSpark4.getClass) def main(args:...

守望者之父
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部