package dom4j_read;

import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; /**
* 读取xml的标签
* getRootElement():获取根标签
* getName():获取标签名称
* element("XX"):获取第一个XX名的子标签
* elements("XX"):获取所有XX名的子标签
* elements():获取所有标签
* element().element(). ~~~:可以多次套用
*
* @author Administrator
*
*/
public class Demo02 {
public static void main(String[] args) throws Exception {
// 创建xml解析器对象
SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); // System.out.println(doc); /*
* 读取标签
*/
// 1.1 读取根标签
Element rootElem = doc.getRootElement();
System.out.println(rootElem); // 1.2 获取标签名称
System.out.println(rootElem.getName()); // 1.3 获取第一个子标签
Element conElem = rootElem.element("contact");
System.out.println(conElem); // 1.4获取所有同名的子标签(指定名字)
List<Element> list = rootElem.elements("contact");
// 遍历List
// 几种方式?
// 1)传统for循环
/*
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
*/ // 2)foreach循环
for(Element e : list) {
System.out.println(e);
}
System.out.println("--------------------------");
// 3)迭代器
/*
Iterator<Element> it = list.iterator();
while(it.hasNext()) {
Element e = it.next();
System.out.println(e);
}
*/ // 1.5 获取所有子标签(不指定名称)
List<Element> eList = rootElem.elements();
for(Element e : eList) {
System.out.println(e);
}
System.out.println("--------------------------");
// 1.6 拿到第一个contact标签的name标签
Element nameElem = rootElem.element("contact").element("name"); System.out.println(nameElem); }
}

xml中,结构如下:

<?xml version="1.0" encoding="gbk"?>
<contact-list>
<contact id="001" name="eric">
<name>张三</name>
<gender>男</gender>
<phone>134001114</phone>
<email>zhangsan@qq.com</email>
<address>成都</address>
</contact>
<contact id="002">
<name>李四</name>
<gender>男</gender>
<phone>134001115</phone>
<email>lisi@qq.com</email>
<address>广州</address>
</contact>
<contact id="003">
<name>王五</name>
<gender>男</gender>
<phone>134001116</phone>
<email>wangwu@qq.com</email>
<address>上海</address>
</contact>
</contact-list>

最新文章

  1. x265,帧内预测代码分析
  2. Socket模块学习
  3. 获取iPhone 联系人列表,并且根据分析得到的姓名首字母进行排序
  4. springMVC-HelloWorld
  5. OC之NSString、NSMutableString学习笔记 常用方法
  6. ajax+bootstrap做弹窗
  7. swap分区
  8. IE9 以下版本浏览器兼容HTML5的方法,使用百度静态资源的html5shiv包
  9. SDL2来源分析3:渲染(SDL_Renderer)
  10. debian root 可以远程登陆
  11. [ZJOI 2013]丽洁体
  12. 配置 docker0 网桥
  13. vue实例
  14. Linux服务器下安装vmware虚拟机
  15. 【JVM】-NO.110.JVM.1 -【GC垃圾收集器】
  16. 【转】剖析异步编程语法糖: async和await
  17. metasploit framework(八):snmp扫描,暴力破解
  18. Spring boot @ConfigurationProperties 和@Value
  19. 西门子S7系列PLC的主要种类及应用软件
  20. “全栈2019”Java多线程第十三章:线程组ThreadGroup详解

热门文章

  1. 【剑指offer】05. 替换空格
  2. SpringMvc接受请求参数的几种情况演示
  3. python -- 模块与类库
  4. Requests方法 -- 参数关联
  5. java反序列化提取payload之xray 高级版的shiro回显poc的提取过程
  6. 轮播图 -- view, swiper
  7. 第八篇--编写Windows服务
  8. [编译] 8、在Linux下搭建 stm8 单片机的开发烧写环境(makefile版)
  9. python3中匿名函数做参数,匿名函数做实参,eval关键字
  10. jvm源码解读--14 defNewGeneration.cpp gc标记复制之后,进行空间清理