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 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
随机推荐
- 407. Trapping Rain Water II
Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevati ...
- spoj Longest Common Substring
Longest Common Substring SPOJ - LCS 题意:求两个串的最长公共子串 /* 对一个串建立后缀自动机,用另一个串上去匹配 */ #include<iostream& ...
- 状压DP【洛谷P1879】 [USACO06NOV]玉米田Corn Fields
P1879 [USACO06NOV]玉米田Corn Fields 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形 ...
- USACO 1.3.6 Ski Course Design[滑雪课程设计]
先说说思路: 这题比上一道坑人的wormholes简单多了!我一看到这题,“XXX设计”,还以为要用到什么dp呢,没想到是水题 用两层循环,第一层循环相差17中的上界,第二层遍历所有的山峰计算答案.并 ...
- window.performance
利用window.performance查看网页性能 一般我们可以通过浏览器的调试工具-网络面板,或者代理工具查看网页加载过程中的各个阶段的耗时.而利用window.performance属性则可以获 ...
- 关于AppiumDriver
java client2.0之后把AppiumDriver作为抽象类,IOSDriver和AndroidDriver继承AppiumDriver.安卓端就用AndroidDriver.2.0之前And ...
- 树莓派使用 PPA 安装 Java 8
前言 在树莓派上安装 Java 8,与这篇的操作类似,不过树莓派不支持用 add-apt-repository 自动添加 webupd8team 的源,所以要手动添加. 步骤 在 /etc/apt/s ...
- Rhino-- JavaScript
Rhino是JDK1.6里自带的一个Javascript Engine,不过他的书写风格好像有点不是很一样. importPackage(Packages.groovy.util); var o = ...
- POJ 2421 Constructing Roads(最小生成树)
Description There are N villages, which are numbered from 1 to N, and you should build some roads su ...
- UVA 10806
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> us ...