package dom4j_read;

import java.io.File;
import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
/**
* 使用dom4j获取xml上的属性信息
*/
import org.dom4j.io.SAXReader; public class Demo03 {
public static void main(String[] args) throws Exception {
// 1)创建xml解析器
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml")); /**
* 1.1 读取属性 注意: 获取属性,必须先得到属性所在的标签
*/ Element conElem = doc.getRootElement().element("contact");
// 1.1在标签上获取属性(根据属性名获得对应的属性值)
String value = conElem.attributeValue("id");
System.out.println(value); /**
* 1.2 获取id = 002的属性 获取名字相同的contact标签中的 第二个标签
*/ // 因为elements返回的是list 放进去之后是Object
Element conELem2 = (Element) doc.getRootElement().elements().get(1); // 下标从0开始的 /**
* 1.3 根据属性名获取属性对象
*/
// 拿到标签对象
conElem = doc.getRootElement().element("contact");
// 拿到属性对象
Attribute idAttr = conElem.attribute("id");
// 通过属性对象拿到属性名
String idName = idAttr.getName();
// 通过属性对象拿到属性值
String idValue = idAttr.getValue();
System.out.println(idName + "=" + idValue); /**
* 1.4 获取标签的所有属性
* 指一个标签中的多个属性值:
* 例如:
* <contact id="001" name="eric">
*/
conElem = doc.getRootElement().element("contact"); List<Attribute> attrList = conElem.attributes();
for(Attribute attribute : attrList) {
System.out.println(attribute.getName()+" = "+attribute.getValue());
}
}
}

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>

使用dom4j工具:获取xml中的标签属性(三)的更多相关文章

  1. freemarker获取封装类中对象的属性

    freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...

  2. freemarker获取封装类中对象的属性(六)

    freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...

  3. Jquery和JS获取ul中li标签(转)

    js 获取元素下面所有的li var content=document.getElementById("content"); var items=content.getElemen ...

  4. Jquery和JS获取ul中li标签

    js 获取元素下面所有的li var content=document.getElementById("content"); var items=content.getElemen ...

  5. dom4j工具对XML写入修改删除操作实现

    import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; import ...

  6. 获取SVG中g标签的宽度高度及位置坐标

    1. 问题的出现 对于普通的HTML元素,有很多获得其宽度width.高度height.距左left.距顶top等属性的方法: 类似offsetWidth,clientWidth,width之类的,通 ...

  7. 使用getElementById获取xml中的指定元素

    Document有一个getElementById的方法,在文档中的解释是:     返回具有带给定值的 ID 属性的 Element.如果不存在此类元素,则此方法返回 null.如果多个元素具有带该 ...

  8. Mybatis配置文件SqlMapConfig.xml中的标签

    SqlMapConfig.xml配置文件中的属性 1 配置内容 properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器 ...

  9. testng.xml中groups标签使用

    XML配置如下: <?xml version="1.0" encoding="UTF-8"?> <suite name="suite ...

随机推荐

  1. Java安全之XStream 漏洞分析

    Java安全之XStream 漏洞分析 0x00 前言 好久没写漏洞分析文章了,最近感觉在审代码的时候,XStream 组件出现的频率比较高,借此来学习一波XStream的漏洞分析. 0x01 XSt ...

  2. Windows内核驱动--实现修改线程优先级demo

    在User下修改优先级比较麻烦,该驱动可以直接用线程ID,和优先级级数两个参数直接修改线程的优先级: Client代码: #include <Windows.h> #include < ...

  3. 转载:使用jquery刷新当前页面以及其他js知识积累

    转载:https://www.cnblogs.com/heguihui/p/10505949.html 如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.loc ...

  4. odoo时间过滤

    Odoo中本日.本月.上月过滤器实现方法   Odoo中本日.本月.上月过滤器实现方法<filter string="今日订单" name="today" ...

  5. Pb代理工具之mitmproxy

    mitmproxy 一 . mitmproxy介绍 mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack). 不同于 fid ...

  6. vue知识点----element UI+vue关于日期范围选择的操作,picker-options属性的使用

    需求场景如下: 指定起止日期,后选的将会受到先选的限制 不同的日期选择器,不过也存在关联关系 实现方法不难,利用了 change 事件,动态改变 picker-options 中的 disableDa ...

  7. #使用C#winform编写渗透测试工具--子域名挖掘

    使用C#winform编写渗透测试工具--子域名挖掘 这篇文章主要介绍使用C#winform编写渗透测试工具--子域名挖掘.在渗透测试中,子域名的收集十分重要,通常一个网站的主站的防御能力特别强,而他 ...

  8. Apereo CAS 4.1 反序列化命令执行漏洞

    命令执行 java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/success&q ...

  9. 【LeetCode】81. 搜索旋转排序数组 II

    81. 搜索旋转排序数组 II 知识点:数组,二分查找: 题目描述 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 ...

  10. 简单的Postman,还能玩出花?

    Postman是一款我们在工作中使用频率非常高的API调试工具,估计很多童鞋在使用它时也比较粗暴,填好接口地址.参数,直接send就完事了,估计大家要说了,这么简单的东西还能玩出什么花来.今天就和大家 ...