java dom4j和_java回顾之XML和dom4j

public class Demo01DOM4J {

public static void main(String[] args) throws DocumentException {

//获取解析器对象

SAXReader reader = new SAXReader();

//读取文件

Document document = reader.read("day22_2\\tianqi.xml");

//获取根元素

Element root = document.getRootElement();

//elements() : 获取当前元素的子元素

List elements = root.elements();

//遍历集合

for (Element e : elements) {

System.out.println(e);

}

System.out.println("---------------------------");

//element(String name) : 根据元素名获取指定子元素(如果有多个重名就获取到第一个)

Element e = root.element("上海");

System.out.println(e);

System.out.println("---------------------------");

//getName() : 获取元素的元素名

System.out.println(root);

System.out.println(root.getName());

//--------------------------

//获取北京里面的最高温度这个元素

Element maxwd = root.element("北京").element("温度").element("最高温度");

System.out.println(maxwd.getName()); //最高温度

//--------------------------

System.out.println("---------------------------");

//attributeValue(String name) : 获取当前元素下某个属性的值

String s = root.element("北京").attributeValue("province");

System.out.println(s);

System.out.println("---------------------------");

//elementText(String name) : 获取指定子元素的文本值,参数是子元素名称

//获取北京的最高温度

Element wd = root.element("北京").element("温度");

//获取温度里面子元素最高温度的值

String s1 = wd.elementText("最高温度");

System.out.println(s1);

//getText() : 获取当前元素的文本值

System.out.println("-----------------------------");

//获取北京的最高温度

Element mwd = root.element("北京").element("温度").element("最高温度");

//获取当前元素的值

String s2 = mwd.getText();

System.out.println(s2);

}

}

4.XPath演示

介绍

刚才我们发现,DOM4J原始写法太过于复杂,复杂在需要一层一层的获取子元素。

XPath的作用是快速的直接定位到目标元素。

XPath是一种路径的写法,下面的两个方法中支持XPath的写法。

Node叫做是节点,DOM里面所有的类型都是Node的子类

比如Document Element Attribute 都是 Node的子类

Node中的两个方法可以使用XPath:

List selectNodes("表达式"):使用Xpath作为参数查找多个节点

Node selectSingleNode("表达式")     :使用Xpath作为参数查找某个节点(默认获取第一个)

Xpath表达式写法

绝对路径表达式方式

以/开头的路径就是绝对路径

// 以单/开头叫绝对路径,绝对路径必须从根元素开始写

//获取天气预报中上海子元素

List list = document.selectNodes("/天气预报/上海");

//遍历集合

for (Element element : list) {

System.out.println(element);

}

System.out.println("---------------------");

//Node selectSingleNode("表达式")     :使用Xpath作为参数查找某个节点(默认获取第一个)

//获取天气预报中第一个上海子元素

Node node = document.selectSingleNode("/天气预报/上海");

System.out.println(node);

相对路径表达式方式

不以单/开头的路径叫相对路径,相对路径相对的是当前元素

//不以单/开头的路径叫相对路径,相对于当前元素

Node node1 = document.selectSingleNode("/天气预报/北京/温度");

System.out.println(node1);

//用相对路径的写法获取湿度

Node node2 = node1.selectSingleNode("../湿度");

System.out.println(node2);

System.out.println("------------------------------------------");

Node node3 = document.selectSingleNode("/天气预报/上海/温度/最高温度");

Node node4 = node3.selectSingleNode("../../湿度");

System.out.println(node4.getText()); // 50%

全文搜索路径表达式方式

//代表忽略中间的路径,不管中间有多少级

//全文搜索

//获取文本中的所有最高温度

List list1 = document.selectNodes("//最高温度");

//遍历集合

for (Element e : list1) {

System.out.println(e.getText());

}

System.out.println("--------------------------------");

//获取广州里面的所有最高温度

List list2 = document.selectNodes("//广州//最高温度");

//遍历集合

for (Element e : list2) {

System.out.println(e);

}

System.out.println("-----------------");

//获取广州里面的直接的最高温度

List list3 = document.selectNodes("//广州/温度/最高温度");

for (Element e : list3) {

System.out.println(e);

}

谓语条件查询 (了解)

可以对属性进行更精细的判断

//谓语查询

List list4 = document.selectNodes("//最高温度[@level='CC']");

//遍历集合

for (Element e : list4) {

System.out.println(e.getText());

}

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值