Dom4J+XPath
第一步:引用jar包
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar(支持XPath必须的,否则会报错java.lang.NoClassDefFoundError: org/jaxen/JaxenException,此jar包可以从dom4j的lib文件夹中获得)
第二步:XPath基本语法
http://www.w3school.com.cn/xpath/index.asp
第三步:实例
users.xml
XMLTools.java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class XMLTools {
public void creat(String filename){//创建xml文件
Document document = DocumentHelper.createDocument();
Element usersElement = document.addElement("Users");
Element userElement = usersElement.addElement("User");
userElement.addAttribute("id", "0");
Element nameElement=userElement.addElement("Name");
nameElement.setText("youchuancong");
Element ageElement=userElement.addElement("Age");
ageElement.setText("23");
Element userElement1 = usersElement.addElement("User");
userElement1.addAttribute("id", "1");
Element nameElement1=userElement1.addElement("Name");
nameElement1.setText("cindy");
Element ageElement1=userElement1.addElement("Age");
ageElement1.setText("23");
try{
XMLWriter output = new XMLWriter(
new FileWriter( new File(filename) ));
output.write( document );
output.close();
}
catch(IOException e){System.out.println(e.getMessage());}
}
public void read(String filename,String id) throws Exception{//根据id读出学生姓名
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");
Element name = e.element("Name");
System.out.println("Name:"+name.getText());
}
public void readName(String filename) throws Exception{//读出所有学生的学生姓名
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
List users = document.selectNodes("//Name");
Iterator it = users.iterator();
while(it.hasNext()){
Element e = (Element)it.next();
System.out.println("Name:"+e.getText());
}
}
public void addUser(String filename,String id,String name,String age) throws Exception{
SAXReader saxReader = new SAXReader();//添加信息
Document document = saxReader.read(new File(filename));
Element e = (Element)document.selectSingleNode("/Users");
// Element e = document.getRootElement();
Element user = e.addElement("User");
user.setAttributeValue("id", id);
user.addElement("Name").setText(name);
user.addElement("Age").setText(age);
XMLWriter output = new XMLWriter(
new FileWriter( new File(filename) ));
output.write( document );
output.close();
}
public void readUser(String filename) throws Exception{//读出所有学生的基本信息
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
List l = document.selectNodes("/Users/User");
Iterator it = l.iterator();
while(it.hasNext()){
Element e = (Element)it.next();
System.out.println("id:"+e.attributeValue("id"));
Element name = e.element("Name");
System.out.println("name:"+name.getText());
Element age = e.element("Age");
System.out.println("age:"+age.getText());
System.out.println("#############################");
}
}
public void delete(String filename,String id) throws Exception{//删除指定id的学生
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");
if(e!=null){
Element parent = e.getParent();
parent.remove(e);
XMLWriter output = new XMLWriter(
new FileWriter( new File(filename) ));
output.write( document );
output.close();
}
}
public void readAll(String filename) throws Exception{//选取所有节点
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
List users = document.selectNodes("//*");
Iterator it = users.iterator();
while(it.hasNext()){
Element e = (Element)it.next();
System.out.println("ElementName:"+e.getName()+"||value:"+e.getText());
}
}
public void modify(String filename,String id,String name) throws Exception{//修改指定学号的学生姓名
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");
Element n = e.element("Name");
n.setText(name);
XMLWriter output = new XMLWriter(
new FileWriter( new File(filename) ));
output.write( document );
output.close();
}
}
XMLTest.java
public class XMLTest {
public static void main(String[] args) {
XMLTools xml = new XMLTools();
//xml.creat("users.xml");
try {
//xml.read("users.xml", "0");
//xml.addUser("users.xml", "4", "no", "100");
//xml.readUser("users.xml");
//xml.readName("users.xml");
xml.readAll("users.xml");
//xml.modify("users.xml", "0", "helloworld");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Dom4J+XPath相关推荐
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- dom4j 解析xml文件(涉及知识点:dom4j,XPath,递归)
涉及知识点 :dom4j, XPath, 递归 知识点: 节点是比元素更大一层的概念, 元素节点仅仅是节点中的一种. 元素,属性,名字空间,注释,文本内容,处理指令,还有整个文档(即看成根节点),这7 ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...
- 第三天【DOM4J Xpath】
一.DOM4J解析XML文件 CURD操作 SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new ...
- xml+dom4j+xpath学生管理系统
<?xml version="1.0" encoding="UTF-8"?><student> <stu> <name ...
- 通讯录系统(控制台+dom4j+xPath+xml)
设计一个通讯录程序 联系人: 编号 姓名 性别 年龄 电话 QQ 邮箱 功能要求: 添加联系人 修改联系人 删除联系人 查询所有联系人 要求: 1)交互使用console(控制台) ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- dom4j xml解析 写框架必备技能(一)
为了尽可能的阅读官网文档 百度dom4j ,说是在sourceForge 可以找到.特意访问https://sourceforge.net/projects/dom4j/ 网址进行查看 发现该项目已经 ...
- Java 使用 Dom4j 解析 XML 指南
Java 使用 Dom4j 解析 XML 指南 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...
最新文章
- Mysql,再见吧!select * !
- pandas将dataframe中的年、月、日数据列合并成完整日期字符串、并使用to_datetime将字符串格式转化为日期格式
- python随机生成字符串_python生成随机数、随机字符串
- iis php5.3 mysql_Win2008 R2配置IIS7.5+PHP Manager+PHP5.3+Mysql5.5+Wincache
- put the eye care sticker on the neck is relief
- spark基准测试-BigDataBenchs
- 这 5 条 IntelliJ IDEA 调试技巧太强了!
- 【OpenCV】SIFT原理与源码分析
- python中linspace函数_numpy.linspace函数具体使用详解
- ubuntu升级11.10登录桌面
- 判断闰年的c语言程序_身为程序员还记得C语言经典算法(附带答案)吗?
- 计算机组成原理 第二版 课后答案 (唐朔飞) 1~8章
- kubectl源码分析之config get-contexts
- 软件体系结构复习指南
- 公众号要如何排版?这几个必备公众号排版技巧千万不要错过哦
- matlab 秩和检验,多个独立样本比较的秩和检验(Kruskal-Wallis H)
- SQLite在指定列后面插入字段_如何用SQL语句添加和修改字段?
- JDK1.8和JDK1.7的HashMap源码分析以及线程不安全问题
- 卸载 make install 编译安装的软件
- 快来看啊,2023成都Java培训机构排行榜出来啦!