* 使用dom4j解析xml 实例在java520里面 TextDom4j
* dom4j,是一个组织,针对xml解析,提供解析器dom4j
* dom4j不是javase的一部分,想要使用第一步需要怎么做
- 导入dom4j提供jar包
- 常见一个文件夹lib
- 复制jar包到lib下面
- 邮件点击jar包.builb path -- add to bulildpath
- 看到jar包变成奶瓶装 表示导入成功
* 得到document使用
* SAXReader reader = new SAXReader();
Document document = reader.read(url);
* document父节点是node找不到方法去弄得中去找.

*document里面的方法getRootElement():获取根节点,返回的是Element
*Element也是一个接口
- Element和Node里面的方法
** getParent():获取父节点
** addElement:获取标签
** element(qname);获取p1下面所有叫qname的一个标签
** elements(qname)获取p1下面的所有qname标签
** elements();获取下面所有标签
* 使用dom4j查询元素;
* 查询所有那么元素里面的值
/*
创建解析器
得到document
得到根节点
得到 多有p1标签

得到name
得到name里面的值
*/
//得到document
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("E:/java520/TextDom4j/src/cn/Dom4j/1.xml");
//得到root节点
Element root = document.getRootElement();
//获取p1
@SuppressWarnings("unchecked")
List<Element> list = root.elements("p1");
//遍历函数
for (Element element1 : list) {
Element name = element1.element("name");
String str = name.getText();
System.out.println(str);
}

* 使用dom4j添加标签,如添加<sex>中国</sex>
//利用sax得到document
SAXReader reader = new SAXReader();
Document doc = reader.read("E:/java520/TextDom4j/src/cn/Dom4j/1.xml");
//得到根节点
Element root = doc.getRootElement();
//得到第一个p1
Element p = root.element("p1");
//在p1下边添加元素
Element xin = p.addElement("sex");
//在xin下面添加文本
xin.setText("中国");

//回写xml
OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式
XMLWriter xml = new XMLWriter(new FileOutputStream("E:/java520/TextDom4j/src/cn/Dom4j/1.xml"), format);//利用写入流将文件写入到doc中
xml.write(doc);//再将doc中文件写入源文件中
xml.close();//关流
* 在特定的文值添加元素:入在第一个p1下面的age标签之前添加<school>学校</school>
* 创建解析器
* 得到document
* 得到根节点
* 获取第一个p1
* 获取p1下面的所有元素
** elements()方法,返回list集合
** 使用list里面的方法.在特定位置添加元素
** 创建元素 documentHelper.createElement("school");
*** add(int index,E element0
- 第一个参数是文职下标,从0开始
- 一二个参数是要添加的元素
* 回写xml
public static void tianjia() throws Exception {
//利用sax获取document文件
SAXReader reader = new SAXReader();
Document document = reader.read("E:/java520/TextDom4j/src/cn/Dom4j/1.xml");
//获取root节点
Element root = document.getRootElement();
//得到第一个p1
List<Element> p1 = root.elements();
//创建元素
Element school = DocumentHelper.createElement("school");
//给school创建文本
school.setText("学校");
//利用javase中的list添加方法添加
p1.add(1, school);
//回写xml
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("E:/java520/TextDom4j/src/cn/Dom4j/1.xml"), format);
xmlWriter.write(document);
xmlWriter.close();

* 使用dom4j修改
* 创建解析器
* 得到document
* 得到根节点
* 获取第一个p1
* 获取p1下面的要修改的元素
*.element("**")
* 修改 使用setText("修改后的内容")方法
* 回写xml
* 使用dom4j实现删除节点的操作
* 创建解析器
* 得到document
* 得到根节点
* 获取第一个p1
* 获取p1下面的要修改的元素
*.element("**")
* 利用父节点删除节点
* 获取父节点 *.getParent();
* *.remover(*);
* 回写xml
* 使用dom4j获取属性的操作
* 得到document
* 得到根节点
* 得到第一个p1元素
* 得到p1里面的属性值
- String value = p1.attributeValue("id1");

* 使用dom4j支持xpath的操作
* 可以直接取到某个元素
1. /AAA/DDD/BBB: 表示一层一层的AAA下面的DDD下面的BBB
2. //BBB: 表示和这个名称相同,只要是名称为BBB的都得到:
3. /*: 表示所有的都得到:
4. BBB[1]:表示BBB第一个元素:
BBB[last()]:表示BBB最后一个元素
5. //BBB[@id]: 表示只要BBB上边有id属性的都得到
6. //BBB[@id="b1"]: 表示元素名称是BBB,在BBB上面所有属性id,并且id的属性值为b1;
* 使用dom4j支持xpath的具体操作
** 默认的情况下,dom4j不支持xpath
** 如果想要zaidom4j里面使用xpath
* 第一步需要引入xpath的jar包;dom4j-1.6.1/lib/jaxen-1.1-beta-6.jar包
** 在dom4j里面提供了两个方法啊,用来支持xpath
* selectNodes("xpath表达式")
- 获取多个节点
* selectSingleNode("xpath表达式")
- 获取单一节点
/*
/**
* 得到document
* 使用selectNode("xpath")方法得到name
*/
Document document = Dom4jutils.getDocument(Dom4jutils.PATH);
List<Node> list = document.selectNodes("//name");
for (Node node : list) {
String str = node.getText();
System.out.println(str);
}
*/
* 使用xpath实现:获取第一个p1下面的name值
* //p1[@id1='aaa']/name
* 使用到selectSingleNode("//p1[@id1='aaa']/name")
**方法步骤
/**
* 得到document
* 利用xpath的到p1下面的值
* */
Document document = Dom4jutils.getDocument(Dom4jutils.PATH);
Node name = document.selectSingleNode("//p1[@id='aaa']/name");
String str = name.getText();
System.out.println(str);
* 实现简单的学生管理系统;
* 使用xml当做数据,存储学生信息:
* 创建xml文件,做学生信息:

xml之dom4j解析的更多相关文章

  1. xml的Dom4j解析规则

    一,xml的样本 <?xml version="1.0" encoding="utf-8"?> <contactList> <co ...

  2. XML—代码—DOM4J解析

    什么是xml: 众所周知,xml常用语数据存储和传输,文件后缀为 .xml: 它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言. 如何定义这些标记 ...

  3. java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class

    package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; impo ...

  4. XML(四)dom4j解析XML

    使用dom4j须要导入jar包 jar包下载地址:http://pan.baidu.com/s/1o65jWRw 将dom4j-1.6.1.jar包导入Eclipse book2.xml <?x ...

  5. Dom4j解析xml

    public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...

  6. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  7. xml(3)--dom4j实现crud操作

    1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax     dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方 ...

  8. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  9. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

随机推荐

  1. react

    package.json ENOSPC 文件监控增加一些 echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf ...

  2. Linux学习之让进程在后台可靠运行的方法详解

    我们经常会碰到这样的问题,用 telnet/ ssh 登录了远程的 Linux 服务器http://www.maiziedu.com/course/592/,运行了一些耗时较长的任务, 结果却由于网络 ...

  3. checkbox做全选按钮

    1.先写一个html页面,里面写一个全选按钮和几个复选框,实现下面2个要求 (1)点击全选按钮选中时,所有的复选框选中. (2)点击全选按钮取消选中时,所有复选框取消选中. <input typ ...

  4. SQL拼接自己需要的字符串

    SQL行转列有多种写法,如果想把多行数据拼接成为新的一行,比如: 首先,将查询转为XML 替换XML的标签 将第一个字符,去掉试用 STUFF函数 sql STUFF用法 1.作用 删除指定长度的字符 ...

  5. 解决jeecg包升级之后无法启动的问题

    1.出现下述问题的解决办法. 解决包冲突问题,右键项目,选择properties 把lib目录下的jar吧添加上.remove调版本较低的包即可. 2. 解决方法,把jdk升级到1.7版本

  6. c# Json 自定义类作为字典键时,序列化和反序列化的处理方法

    一般情况下,Newtonsoft.Json.dll 对 Dictionary<int,object>.Dictionary<string,object>等序列化与反序列化都是成 ...

  7. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  8. session、cookie浅见

    万事开头难,刚开始不一定能写好博文,不,应该是一定写的不好,但我定会用心. 以前只知道session是存在服务器,cookie是存在客户端,至于它们工作的原理就不了解了.为了巩固自己记忆,小小的总结了 ...

  9. JS学习:第二周——NO.4DOM库

    DOM库封装练习 var utils = (function () { var flg = 'getComputedStyle' in window;//惰性思想的运用: function makeA ...

  10. java常用工具

    /** * 将字节数组转换成字符串 * @param array 字节数组 * @return String */ public static String byte2str(byte[] array ...