xmlDemo4j解析

package lianxi;
import java.util.Iterator;
import java.util.List;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dome4j {
private static Document docu=null;
public static void main(String[] args) throws Exception {
read();
list(docu.getRootElement());//得到根元素
//select(docu);
//add(docu);
//update(docu);
//delete(docu);
}
private static void delete(Document docu2) throws Exception {
//删除第一个属性
Element stu=docu.getRootElement().element("学生");
stu.getParent().remove(stu);
save();
//删除元素
/*Element stu1=docu.getRootElement().element("学生").element("名字");
stu1.remove(stu1);*/
}
private static void update(Document docu) throws Exception {
//先遍历出所有的学生姓名
Element stus=(Element)docu.getRootElement().elements("学生").get(0);//elements表示取出所有元素
Element name=stus.element("名字");
name.setText("李逵");
save();
}
private static void save() throws Exception {
OutputFormat output=OutputFormat.createPrettyPrint();//指定输出格式
output.setEncoding("utf-8");
//勇Writer跟新
XMLWriter wr=new XMLWriter(new FileOutputStream(new File("src/na.xml")),output);//起到美化作用
wr.write(docu);
wr.close();
}
private static void add(Document docu) throws Exception {
//首先建立一个学生节点
Element newstu=DocumentHelper.createElement("学生");//DocumentHelper.createElement添加节点
Element newstu_name=DocumentHelper.createElement("名字");
newstu_name.setText("刘春勇");
Element newstu_age=DocumentHelper.createElement("年龄");
newstu_age.setText("23");
Element newstu_txt=DocumentHelper.createElement("介绍");
newstu_txt.setText("超级无敌的猛人");
newstu.add(newstu_name);//将子节点添加到上一个节点中
newstu.add(newstu_age);
newstu.add(newstu_txt);
docu.getRootElement().add(newstu);//将所有节点添加到根节点中
save();
}
//查询某个学生的信息
private static void select(Document docu) {
/* root.elements("学生"):表示取出root元素下所有的学生元素
* root.element("学生"): 表示取出root元素下第一个学生元素
* root.elements("学生").get(0): 表示取出root元素下第一个学生元素
* attributeValue:值得为属性值
*
* */
//1.首先要得到根元素
Element root=docu.getRootElement();
Element stu=(Element)root.elements("学生").get(0);//返回的是node需要转化
//继续寻找元素下的名字
Element stu_name=stu.element("名字");
System.out.println(stu_name.getName()+"----"+stu_name.getText());
Element stu_age=stu.element("年龄");
System.out.println(stu_age.getName()+"----"+stu_age.getText());
Element stu_txt=stu.element("介绍");
System.out.println(stu_txt.getName()+"----"+stu_txt.getText());
}
private static void read() throws Exception{
//通过解析器去解析xml
SAXReader saxread=new SAXReader();
docu=saxread.read("src/na.xml");//Document
}
private static void list(Element element){
//遍历xml文件
System.out.println(element.getName()+element.getTextTrim());//去除空格
//获取子元素
Iterator iter=element.elementIterator();//Iterator来遍历节点
while(iter.hasNext()){
//查找其下面是否还有其他的子元素
Element e=(Element)iter.next();
list(e);
}
}
}
xmlDemo4j解析的更多相关文章
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- Html Agility Pack 解析Html
Hello 好久不见 哈哈,今天给大家分享一个解析Html的类库 Html Agility Pack.这个适用于想获取某网页里面的部分内容.今天就拿我的Csdn的博客列表来举例. 打开页面 用Fir ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye
一.写在前面 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针:而对于java来说,就是new出来的Object放在Heap上无法被GC回收:而这里就把我之前的一篇内存泄漏的总 ...
- SQL Server 数据加密功能解析
SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
随机推荐
- Js判断参数(String,Array,Object)是否为undefined或者值为空
在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...
- 一看你就懂,超详细java中的ClassLoader详解(转)
转载地址 http://blog.csdn.net/briblue/article/details/54973413 目录(?)[-] Class文件的认识 你还记得java环境变量吗 J ...
- 【Cracking the Code Interview(5th edition)】二、链表(C++)
链表结点类型定义: class Node { public: ; Node *next = nullptr; Node(int d) { data = d; } }; 快行指针(runner)技巧: ...
- [Android UI]View滑动方式总结
一.前言 在上一篇文章,介绍了View的坐标等基础知识,有了基础知识后,对下面内容的理解也将会容易很多.那么本文介绍的是View滑动的几种方式,这对于View来说,也是需要重要掌握的内容,因为用户无时 ...
- sharepoint_study_13
描述: 解决: 1.修改了密码和账户,找到对应的应用程序池,修改用户名和密码,重启iis. 2.站点上安装的产品(如:工作流)启动需要用户名和密码,找到对应的服务,修改用户名和密码并重启该服务.
- java算法外传之靠工资多久能实现小目标...
public static void main(String[] args) { //小目标 final int smallGoal=100_000_000; //月份 int month=1; // ...
- spring aop实现log 日志跟踪
之前写的那篇是基于springboot的(https://www.cnblogs.com/yaoyuan2/p/10302802.html),由于遗留项目用的是spring,因此需要在spring基础 ...
- shell脚本学习(1)
格式: #!/bin/bash :标志一个shell脚本 #Filename:first_shell.sh :文件名称 #a ...
- PHP、thinkPHP5.0开发网站文件管理功能(四)下载文件
public function download($currdir = null){ $file = urldecode($currdir); $file = iconv('UTF-8', " ...
- JavaScript base64多图上传
<div> <form action="/home/Uplod" method="post" enctype="multipart/ ...