文档章节

xml

CarlDing
 CarlDing
发布于 2016/03/11 13:53
字数 338
阅读 5
收藏 0
 package cn.demo;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Demo01_Dom {
 @Test
 public void test1() throws Exception {
  // 1:创建XML解析器
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  // 2:解析Xml文件,返回一个org.w3c.Docuemnt内存文档对象
  Document dom = db.parse(new File("./files/studs.xml"));
  // 3:读取所有cls元素
  NodeList nl = dom.getElementsByTagName("cls");
  // 遍历所有List
  for (int i = 0; i < nl.getLength(); i++) {
   Element ele = (Element) nl.item(i);// 获取每一个元素<cls>
   String name = ele.getAttribute("name");// 获取name属性的值
   System.err.println(name);
   // 在ele下获取<stud>元素
   NodeList studs = ele.getElementsByTagName("stud");
   for (int j = 0; j < studs.getLength(); j++) {
    Element stud = (Element) studs.item(j);
    String id = stud.getAttribute("id");
    String studName = stud.getElementsByTagName("name").item(0).getTextContent();
    String studAge = stud.getElementsByTagName("age").item(0).getTextContent();
    NodeList tels = stud.getElementsByTagName("tel");
    String tel = "";
    if (tels.getLength() > 0) {
     tel = tels.item(0).getTextContent();
    }
    System.err.println(id + "," + studName + "," + studAge + "," + tel);
   }
   System.err.println("=====================");
  }
 }
 @Test
 public void test2() throws Exception {
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document dom = db.parse(new File("./files/studs.xml"));
  // 创建一个新的班
  Element newClsEle = dom.createElement("cls");// 只是在内存中创建
  newClsEle.setAttribute("name", "新班");
  Element newStudEle = dom.createElement("stud");
  newStudEle.setAttribute("id", "S100");
  Element eleName = dom.createElement("name");
  eleName.setTextContent("越了");
  newStudEle.appendChild(eleName);
  newClsEle.appendChild(newStudEle); // 获取根元素
  
  
  dom.getFirstChild().appendChild(newClsEle);
  // 使用transformer保存内存中的xml文件
  Transformer ts = TransformerFactory.newInstance().newTransformer();
  // 保存
  ts.transform(new DOMSource(dom), new StreamResult("./files/a.xml"));
 }
 
 @Test
 public void test3() throws Exception {
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document dom = db.parse(new File("./files/studs.xml"));
  
  
  NodeList nl  = dom.getElementsByTagName("cls");
  Element ele = (Element) nl.item(nl.getLength()-1);
  
  //dom.getFirstChild().removeChild(ele);
  ele.getParentNode().removeChild(ele);
  // 使用transformer保存内存中的xml文件
  Transformer ts = TransformerFactory.newInstance().newTransformer();
  // 保存
  ts.transform(new DOMSource(dom), new StreamResult("./files/studs.xml"));
 }
}

© 著作权归作者所有

上一篇: zip压缩与解压
下一篇: 生成验证码
CarlDing
粉丝 5
博文 106
码字总数 78103
作品 0
济南
其他
私信 提问

暂无文章

Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0
Linux创建yum仓库

第一步、搞定自己的光盘 #创建文件夹 mkdir -p /media/cdrom #挂载光盘 mount /dev/cdrom /media/cdrom #编辑配置文件使其永久生效 vim /etc/fstab 第二步,编辑yun源 vim /ect yum.repos.d...

究极小怪兽zzz
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部