先概括,再以代码形式给出。

获取节点:

Iterator  Element.nodeIterator();  //获取当前标签节点下的所有子节点

获取 标签:

Element Document.getRootElement();  //获取xml文档的根标签

Element  ELement.element("标签名") //指定名称的第一个子标签

Iterator<Element>Element.elementIterator("标签名");// 指定名称的所有子标签

List<Element>  Element.elements(); //获取所有子标签

获取属性:

String   Element.attributeValue("属性名") //获取指定名称的属性值

Attribute   Element.attribute("属性名");//获取指定名称的属性对象

Attribute.getName()  //获取属性名称

Attibute.getValue()  //获取属性值

List<Attribute>     Element.attributes();  //获取所有属性对象.推荐使用方案。

Iterator<Attribute>      Element.attibuteIterator(); //获取所有属性对象

获取文本:

Element.getText();  //获取当前标签的文本

Element.elementText("标签名")//获取当前标签的指定名称的子标签的文本内容

案例:

import java.io.File;
import java.util.Iterator;
import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test; /**
* 第二个dom4j读取xml文件内容
* 节点
* 标签
* 属性
* 文本
* @author APPle
*
*/
public class Demo2 { /**
* 得到节点信息
*/
@Test
public void test1() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml")); //2.nodeIterator: 得到当前节点下的所有子节点对象(【不包含孙以下的节点】)
Iterator<Node> it = doc.nodeIterator();//返回的是一个迭代器对象,迭代器里面存放的就是Node,给出泛型为Node
while(it.hasNext()){//判断是否有下一个元素
Node node = it.next();//取出元素
String name = node.getName();//得到节点名称
//System.out.println(name); //System.out.println(node.getClass());
//继续取出其下面的子节点
//只有【标签节点】才有子节点
//判断当前节点是否是标签节点
if(node instanceof Element){
Element elem = (Element)node;//node是Node类型的,因此要向下转型
Iterator<Node> it2 = elem.nodeIterator();
while(it2.hasNext()){
Node n2 = it2.next();
System.out.println(n2.getName());
}
}
}
} /**
* 遍历xml文档的所有节点
* @throws Exception
*/
@Test
public void test2() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml")); //得到根标签。contactList
Element rooElem = doc.getRootElement(); getChildNodes(rooElem); } /**
* 获取 传入的标签下的所有子节点。Element elem只有Element标签才有子节点
* @param elem
*/
private void getChildNodes(Element elem){
System.out.println(elem.getName());//获取到了根标签的名称 //得到子节点
Iterator<Node> it = elem.nodeIterator();
while(it.hasNext()){
Node node = it.next(); //1.判断是否是标签节点
if(node instanceof Element){
Element el = (Element)node;
//递归
getChildNodes(el);
}
};
} /**
* 获取标签
*/
@Test
public void test3() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml")); //2.得到根标签
Element rootElem = doc.getRootElement();
//得到标签名称
String name = rootElem.getName();
System.out.println(name);//contactList //3.得到当前标签下指定名称的【第一个】【子】标签 /*Element contactElem = rootElem.element("contact");
System.out.println(contactElem.getName());*/ //4.得到当前标签下指定名称的所有子标签,指定了contact名称,就得到这个名称的所有同名的标签
//这里制定了名称,有局限性
/*Iterator<Element> it = rootElem.elementIterator("contact");
while(it.hasNext()){
Element elem = it.next();
System.out.println(elem.getName());
}*/ //5.得到当前rootElem标签下的的所有子标签对象,这里会拿出所有子标签对象。推荐使用。
List<Element> list = rootElem.elements();
//遍历List的方法
//1)传统for循环 2)增强for循环 3)迭代器
/*for(int i=0;i<list.size();i++){
Element e = list.get(i);
System.out.println(e.getName());
}*/ for(Element e:list){
System.out.println(e.getName());
}
/*
Iterator<Element> it = list.iterator(); //ctrl+2 松开 l
while(it.hasNext()){
Element elem = it.next();
System.out.println(elem.getName());
}*/ //获取更深层次的标签(方法只能一层层地获取)
Element nameElem = doc.getRootElement().
element("contact").element("name");
System.out.println(nameElem.getName()); } /**
* 获取属性
*/
@Test
public void test4() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml")); //获取属性:(先获得属性所在的标签对象,然后才能获取属性)
//1.得到标签对象
Element contactElem = doc.getRootElement().element("contact");
//2.得到属性
//2.1 得到指定名称的属性值
/*
String idValue = contactElem.attributeValue("id");
System.out.println(idValue);
*/ //2.2 得到指定属性名称的属性对象Attribute
/*Attribute idAttr = contactElem.attribute("id");
//getName: 属性名称 getValue:属性值
System.out.println(idAttr.getName() +"=" + idAttr.getValue());*/ //2.3 得到【所有】属性对象,返回LIst集合。不需要知道属性名称和多少个属性
/*List<Attribute> list = contactElem.attributes();//推荐使用方案
//遍历属性
for (Attribute attr : list) {
System.out.println(attr.getName()+"="+attr.getValue());
}*/ //2.4 得到【所有属性】对象,返回迭代器
Iterator<Attribute> it = contactElem.attributeIterator();
while(it.hasNext()){
Attribute attr = it.next();
System.out.println(attr.getName()+"="+attr.getValue());
} } /**
* 获取文本
*/
@Test
public void test5() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); /**
* 注意: 空格和换行也是xml的内容
*/
String content = doc.getRootElement().getText();
System.out.println(content); //获取文本(先获取标签对象,再获取标签上的文本)
Element nameELem =
doc.getRootElement().element("contact").element("name");
//1. 得到文本
String text = nameELem.getText();
System.out.println(text); //2. 得到指定子标签名的文本内容
String text2 =
doc.getRootElement().element("contact").elementText("phone");
System.out.println(text2); } }

java Domj4读取xml文件的更多相关文章

  1. java Domj4读取xml文件加强训练案例

    需求:给出一段xml文件.要求按照鸳鸯输出. xml文件代码如下: <?xml version="1.0" encoding="utf-8"?> & ...

  2. Java反射——读取XML文件,创建对象

    读取XML文件,创建对象 config.xml <?xml version="1.0" encoding="UTF-8"?> <beans&g ...

  3. Java如何读取XML文件 具体实现

    转载自:http://www.jb51.net/article/44338.htm import java.io.*; import javax.xml.parsers.DocumentBuilder ...

  4. Domj4读取xml文件

    节点: Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点 标签: Element Document.getRootElement(); //获取xm ...

  5. Java获取路径方法&相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

  6. JAVA读取XML文件数据

    XML文档内容如下: <?xml version="1.0" encoding="UTF-8"?> <root> <field t ...

  7. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  8. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .

    背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...

  9. 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)

    原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...

随机推荐

  1. 90. Subsets II(中等,编写代码有难度)

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  2. @RequestBody注解用法

    做Java已经有8个多月了,但是基本没有学习过Java语言,因此在项目中写代码基本靠的是其他语言的基础来写Java代码,写出来的很多代码虽然能用,但是感觉很不地道,虽然从来没有同事说过,但是我自己觉得 ...

  3. 一起撸个简单粗暴的Tv应用主界面的网格布局控件(上)

    这一篇是真的隔了好久了~~,也终于可以喘口气来好好写博客了,这段时间实在是忙不过来了,迭代太紧.好,废话不多说,进入今天的主题. 效果 图一是Tv应用:当贝市场的主页 图二是咱自己撸的简单粗暴的 Tv ...

  4. JSON 封装函数

    var eventUtil = { addHandler:function(element,type,handler) { //添加句柄 if(element.addEventListener) { ...

  5. MongoDB 监控

    在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能.这样在大流量得情况下可以很好的应对并保证MongoDB正常运作. MongoDB中提供了m ...

  6. Docker创建 tomcat/weblogic 集群

    安装 tomcat 镜像 准备好需要的 jdk.tomcat 等软件放到 home 目录下面,启动一个容器 docker run -t -i -v /home:/opt/data --name mk_ ...

  7. 安卓高级 Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  8. Bootstrap3 栅格系统-栅格参数

    通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的. -–下面有个"顶"字,你懂得O(∩_∩)O哈哈~ -–乐于分享,共同进步! -–更多文章请看:h ...

  9. 深入解读XML解析

    一.XML是什么?有什么用? XML是指.作为配置文件存在 二.XML的基本语法 1.文档声明:很重要 在编写XML文档时,需要先使用文档声明来声明XML文档.且必须出现在文档的第一行. 作用:告知解 ...

  10. Swift:Foundation框架中的NS前缀的由来

    可能大家对于著名的NS前缀的由来有一些疑问. 绝大多数这些NS前缀的类是NeXTSTEP操作系统中Foundation框架里的一部分,而该操作系统是OS X的基础. NeXTSTEP的程序员对它们的类 ...