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

获取节点:

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. Angular 路由配置

    路由,简单的来说就是让组件之间进行跳转和参数的传递. 1.先在app目录下创建一个名为app.route.ts的路由组件 2.打开app.route.ts 在里面创建路由组件的代码(可通过编辑器快捷生 ...

  2. ubuntu14.04 python2.7 安装配置OpenCV3.0

    环境:ubuntu14.04  python2.7 内容:安装并配置OpenCV3.0 今天按照OpenCV官网上的步骤装了OpenCV但是,装好之后python提示“No module named ...

  3. 吐槽:【计算机网络与通信】.张元.高清文字版.pdf

    看了这本书的pdf,发现了一处错误,瞬间就不想再看了.新下载了谢希仁老师的<计算机网络>.

  4. Docker快速配置指南

    下面是一个跟 Docker 网络相关的命令列表. 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效. -b BRIDGE or --bridge=BRIDGE --指定容 ...

  5. How to Collect Bne Log Files for GL Integrators

    In this Document   Goal   Solution APPLIES TO: Oracle General Ledger - Version 11.0 and laterInforma ...

  6. [django]urls.py 中重定向

    Django 1.5 有时候需要对一个链接直接重定向,比如首页啥的重定向到一个内容页等等,在views.py 中可以设定,如果没有参数啥的在urls.py 中设定更加方面 from django.vi ...

  7. Erlang application stop 调用死锁

    Erlang application stop 调用死锁(金庆的专栏)在application行为模块的start()中启动bson应用,在stop()中停止bson,结果application:st ...

  8. ListView之侧滑删除

    SwipeMenuListView 是一个为listview添加item侧滑菜单的开源库,项目地址:https://github.com/baoyongzhang/SwipeMenuListView ...

  9. Google Dremel数据模型详解(上)

    首先简单介绍一下Dremel是什么,能解决什么问题.第二部分着重讲Dremel的数据模型,即数据结构.第三部分将谈一下在此数据结构上设计的算法. 1 起源 Dremel的数据模型起源于分布式系统的应用 ...

  10. Android必知必会-带列表的地图POI周边搜索

    如果移动端访问不佳,请尝试–> Github版 2016-08-22 更新 注意:在 Activity 代码中的onPoiSearched(PoiResult result, int rCode ...