解析读取XML

public static void main(String[] args) {
//1获取SaxReader对象
SAXReader reader=new SAXReader();
try {
//2使用Saxrreader对象加载xml文件,返回Document对象
Document document=reader.read(new File("student.xml")); //3使用document对象或根元素
Element rootele=document.getRootElement(); //4获取子元素的集合(获取的是student子元素的集合)
List<Element> lsstu_ele=rootele.elements("student"); System.out.println("student元素的个数:"+lsstu_ele.size());
//遍历student元素
for (Element stuele : lsstu_ele) {
/***********************************
//获取student元素下的子元素
Element sid_ele=stuele.element("sid");
Element sname_ele=stuele.element("sname");
Element sex_ele=stuele.element("sex");
Element address_ele=stuele.element("address");
Element age_ele=stuele.element("age"); //获取每个子元素的文本内容
System.out.println("编号:"+sid_ele.getText());
System.out.println("姓名:"+sname_ele.getText());
System.out.println("性别:"+sex_ele.getText());
System.out.println("地址:"+address_ele.getText());
System.out.println("年龄:"+age_ele.getText());
System.out.println("========================");
**************************************/
//获取每个子元素的文本内容
System.out.println("编号:"+stuele.elementText("sid"));
System.out.println("姓名:"+stuele.elementText("sname"));
System.out.println("性别:"+stuele.elementText("sex"));
System.out.println("地址:"+stuele.elementText("address"));
System.out.println("年龄:"+stuele.elementText("age"));
System.out.println("========================");
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

向xml文件中添加节点并写入文件保存;

public static void main(String[] args) {
//1创建SaxReader对象
SAXReader reader=new SAXReader(); try {
//2读取xml文档,并返回document对象
Document document=reader.read(new File("student.xml")); //3获取根元素
Element rootele=document.getRootElement(); //4在根元素下添加student子元素
Element st_ele=rootele.addElement("student"); //在新增的student元素下添加其他子元素
Element sid_ele=st_ele.addElement("sid");
Element sname_ele=st_ele.addElement("sname");
Element sex_ele=st_ele.addElement("sex");
Element address_ele=st_ele.addElement("address");
Element age_ele=st_ele.addElement("age"); //在每个子元素下添加内容
Scanner sc=new Scanner(System.in); System.out.println("输入编号:");
sid_ele.setText(sc.next()); System.out.println("输入姓名:");
sname_ele.setText(sc.next()); System.out.println("输入性别:");
sex_ele.setText(sc.next()); System.out.println("输入地址:");
address_ele.setText(sc.next()); System.out.println("输入年龄:");
age_ele.setText(sc.next()); //创建字节输出流对象
FileOutputStream fout=new FileOutputStream("student.xml"); //创建缓冲区字符输出流对象
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fout, "utf-8")); //写文档到xml文件
document.write(bw);
bw.flush();
bw.close();
System.out.println("增加成功!");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

修改xml 文件中的节点并写入文件保存;

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//1创建SaxReader对象
SAXReader reader=new SAXReader(); try {
//2读取xml文档,并返回document对象
Document document=reader.read(new File("student.xml")); //3获取根元素
Element rootele=document.getRootElement(); //4获取student子元素的集合
List<Element> lsst_ele=rootele.elements("student"); System.out.println("请输入要修改的学生编号:");
String sid=sc.next(); for (Element stu_ele : lsst_ele) {
if(stu_ele.elementText("sid").equals(sid)){
System.out.println("输入姓名:");
stu_ele.element("sname").setText(sc.next()); System.out.println("输入性别:");
stu_ele.element("sex").setText(sc.next()); System.out.println("输入地址:");
stu_ele.element("address").setText(sc.next()); System.out.println("输入年龄:");
stu_ele.element("age").setText(sc.next());
break;
}
} //创建字节输出流对象
FileOutputStream fout=new FileOutputStream("student.xml"); //创建缓冲区字符输出流对象
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fout, "utf-8")); //写文档到xml文件
document.write(bw);
bw.flush();
bw.close();
System.out.println("修改成功!");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

删除xml文件中的节点

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//1创建SaxReader对象
SAXReader reader=new SAXReader(); try {
//2读取xml文档,并返回document对象
Document document=reader.read(new File("student.xml")); //3获取根元素
Element rootele=document.getRootElement(); //获取要移除的学生编号
System.out.println("请输入要删除的学生编号:");
String sid=sc.next(); //获取student元素的集合
List<Element> lsstu_ele=rootele.elements("student");
for (Element stu_ele : lsstu_ele) {
//在元素中查找学生编号内容是否与输入的一致
if(stu_ele.elementText("sid").equals(sid)){
rootele.remove(stu_ele);//删除整个student元素
System.out.println("元素删除成功!");
break;
}
}
//创建字节输出流对象
FileOutputStream fout=new FileOutputStream("student.xml"); //创建缓冲区字符输出流对象
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fout, "utf-8")); //写文档到xml文件
document.write(bw);
bw.flush();
bw.close();
System.out.println("移除成功!");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

xml读写的工具类方法示例

    /**
* 将Document对象写入到xml文件
* @throws IOException
* */
public static void XmlToFile(Document doc) throws IOException{ //创建字节输出流对象
FileOutputStream fout=new FileOutputStream(new File("student.xml"));
//创建字节流缓冲区,加快写出速度
BufferedOutputStream bout=new BufferedOutputStream(fout); //创建字符输出流对象
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(bout, "utf-8")); doc.write(bw); bw.flush();
bw.close();
System.out.println("写xml文件成功");
}
/**
* 从xml文件中获取学生的对象集合
* */
public static List<Student> fileToList(){
SAXReader reader=new SAXReader();
List<Student> lsst=new ArrayList<Student>(); try {
Document doc=reader.read(new File("student.xml")); //获取根元素
Element root_ele=doc.getRootElement(); //从xml文件获取student子元素集合
List<Element> lsst_ele=root_ele.elements("student");
if(lsst_ele!=null&&!lsst_ele.isEmpty()){//有student子元素存在
for (Element stu_ele : lsst_ele) {
Student st=new Student();
st.setSid(stu_ele.elementText("sid"));
st.setSname(stu_ele.elementText("sname"));
st.setSex(stu_ele.elementText("sex"));
st.setAddress(stu_ele.elementText("address"));
st.setAge(Integer.parseInt(stu_ele.elementText("age"))); lsst.add(st);//将学生对象加入到集合中
}
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lsst;
}

Dom4J读写xml的更多相关文章

  1. Dom4j下载及使用Dom4j读写XML简介

    sitinspring(如坐春风)原创,转载请注明作者及出处. 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4 ...

  2. Dom4j下载及使用Dom4j读写XML简介(转)

    Dom4j下载及使用Dom4j读写XML简介 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:ht ...

  3. dom4j读写XML文档

    dom4j 最常用最简单的用法(转) 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http:/ ...

  4. dom4j读写XML文件

    XML文件格式: <?xml version="1.0" encoding="UTF-8"?> <company> <employ ...

  5. 【网络爬虫】【java】微博爬虫(四):数据处理——jsoup工具解析html、dom4j读写xml

    之前提到过,对于简单的网页结构解析,可以直接通过观察法.手工写正则解析,可以做出来,比如网易微博.但是对于结构稍微复杂点的,比如新浪微博,如果还用正则,用眼睛一个个去找,未免太麻烦了. 本文介绍两个工 ...

  6. Java实现——Dom4j读写XML文件

    1. dom4j概述 解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP. 最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义. 2. do ...

  7. java dom4j 读写XML

    <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Config id ...

  8. 利用dom4j读写XML

    public static HashMap<String, String> ReadConfig() { HashMap<String, String> map=new Has ...

  9. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

随机推荐

  1. 搭建Linpack

    环境:vmware workstation14 + centos7(linux基本都可以) 一.开始安装mpich 1. 解决依赖gcc gcc-gfortran sudo yum install g ...

  2. 关于 package.json 和 package-lock.json 文件说明

    package.json 在 Node.js 中,模块是一个库或框架,也是一个 Node.js 项目.Node.js 项目遵循模块化的架构,当我们创建了一个 Node.js 项目,意味着创建了一个模块 ...

  3. 统计大写字母个数&压缩和去重(过滤)

    找出给定字符串中大写字符(即'A'-'Z')的个数 接口说明 原型:int CalcCapital(String str); 返回值:int 知识点 字符串 运行时间限制 10M 内存限制 128 输 ...

  4. Web 开发的未来:React、Falcor 和 ES6

    Web 开发的未来:React.Falcor 和 ES6 Widen是一家数字资产管理解决方案提供商.目前,其技术栈还非常传统,包括服务器端的Java.浏览器端的AngularJS.提供REST AP ...

  5. save?commit

    数据库的隐式提交 先看一段SQL,最后一条SQL的输出你认为是什么? 1 2 3 4 5 6 7 SET AUTOCOMMIT = 1; BEGIN; INSERT INTO t1 VALUES (1 ...

  6. 用Python实现基于Hadoop Stream的mapreduce任务

    用Python实现基于Hadoop Stream的mapreduce任务 因为Hadoop Stream的存在,使得任何支持读写标准数据流的编程语言实现map和reduce操作成为了可能. 为了方便测 ...

  7. CentOS修改IP地址

    一.CentOS 修改IP地址修改对应网卡的IP地址的配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   电信 # vi /etc/syscon ...

  8. 电脑显卡4种接口类型:VGA、DVI、HDMI、DP

    电脑显卡全称显示接口卡(Video card,Graphics card),又称为显示适配器(Video adapter),显示器配置卡简称为显卡,是个人电脑最基本组成部分之一.对于显卡接口类型,主要 ...

  9. [译]在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?

    原文来源: https://stackoverflow.com/questions/7828867/how-to-efficiently-compare-two-unordered-lists-not ...

  10. 设计模式之单例模式与工厂模式的Python实现(二)

    2. 工厂模式 工厂模式是创建型设计模式的一种.核心的思想是,通过传递给类或函数某种产品的信息来创建产品并返回.当我们想得到产品a对象,只需把产品a的名字传递给工厂函数就能得到产品a对象.而核心思想的 ...