XML解析,简单易学(Jdom+XPath)让你轻松上手: 精简Demo(含jar包)

清疚 2023-10-04 09:44 42阅读 0赞

一、前言:对于初学者而言,XML文档操作,让人望而止步。本案例让你轻松上手。

二、准备工作:下载 Jdom jar包。

方法一:http://www.jdom.org/downloads/index.html 进入网页后:点击左侧:Downloads Binaries ,然后选择右侧的版本下载

方法二:http://www.jdom.org/dist/binary/archive/ 直接下载对应版本

方法三:https://dom4j.github.io/ 进入页面后,页面中上方,寻找DownLoad字眼

三、创建工程。

1、创建Java工程Jdom

2、创建Java测试类:JdomTest

3、创建XML文件(测试案例)

4、工程中,引入已下载的Jdom的jar包,建议使用2以上的版本。

四、具体代码。

主类:JsomTest.java

  1. package com.xp.jdom.mode;
  2. import java.util.*;
  3. //import org.jdom.*;//老版本写法
  4. import org.jdom2.*;//新版本写法
  5. import org.jdom2.input.SAXBuilder;
  6. import org.jdom2.xpath.*;
  7. public class JdomTest {
  8. //Jdom + Xpath测试案例 (老版本的Xpath写法,比较繁琐,逐步被废弃)
  9. public static void testJdomAndXpath() throws Exception {
  10. SAXBuilder sb = new SAXBuilder();
  11. Document doc = sb.build("sample.xml");
  12. Element root = doc.getRootElement();
  13. List<Element> list = (List<Element>) XPath.selectNodes(root, "/HD/disk");
  14. for (Element element:list) {
  15. String name = element.getAttributeValue("name");
  16. String capacity = ((Text) XPath.selectSingleNode(element,"//disk[@name='" + name + "']/capacity/text()")).getTextNormalize();
  17. String directories = ((Text) XPath.selectSingleNode(element,"//disk[@name='" + name + "']/directories/text()")).getTextNormalize();
  18. String files = ((Text) XPath.selectSingleNode(element, "//disk[@name='" + name + "']/files/text()")).getTextNormalize();
  19. System.out.println("磁盘信息:");
  20. System.out.println("分区盘符:" + name);
  21. System.out.println("分区容量:" + capacity);
  22. System.out.println("目录数:" + directories);
  23. System.out.println("文件数:" + files);
  24. System.out.println("-----------------------------------");
  25. }
  26. }
  27. //纯Jdom 测试案例(Jdom版本2已融合Xpath的功能,更简便)
  28. public static void JdomTest()throws Exception {
  29. SAXBuilder sb = new SAXBuilder();
  30. // Document doc = sb.build("sample.xml");//写法1:默认是从项目根目录找
  31. Document doc = sb.build(new JdomTest().getClass().getResourceAsStream("sample.xml"));// 写法2:读取某个java类同级目录下的文件
  32. Element root = doc.getRootElement();
  33. List<Element> list = root.getChildren("disk");
  34. for (Element element:list) {
  35. String name = element.getAttributeValue("name");
  36. String capacity = element.getChildText("capacity");
  37. String directories = element.getChildText("directories");
  38. String files = element.getChildText("files");
  39. System.out.println("磁盘信息:");
  40. System.out.println("分区盘符:" + name);
  41. System.out.println("分区容量:" + capacity);
  42. System.out.println("目录数:" + directories);
  43. System.out.println("文件数:" + files);
  44. System.out.println("-----------------------------------");
  45. }
  46. }
  47. public static void main(String[] args) throws Exception {
  48. testJdomAndXpath();//老版本写法
  49. JdomTest();//新版本Jdom 2 写法
  50. }
  51. }

辅助文件:sample.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <HD>
  3. <disk name="C">
  4. <capacity>8G</capacity>
  5. <directories>200</directories>
  6. <files>1580</files>
  7. </disk>
  8. <disk name="D">
  9. <capacity>10G</capacity>
  10. <directories>500</directories>
  11. <files>3000</files>
  12. </disk>
  13. </HD>

运行结果:

磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-—————————————————
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000

官网的jar包实在不会下载(官网总是不定期改动),安排:点这里,为你准备的Jdom,jar包 (资源分有限的,请留言,无偿发放给爱学习的你)

参考:JDOM/XPATH编程指南

发表评论

表情:
评论列表 (有 0 条评论,42人围观)

还没有评论,来说两句吧...

相关阅读

    相关 xml jar

    接口之间交互的数据量大,且数据结构复杂,建议使用xml 一般交互方式采用xml字符串进行webservice交互 此时,需要双方协议xml格式,生成xsd文件,打出jar包

    相关 Jdom2之轻松解析XML

    \[b\]\[size=large\]关于XML的解析,是编程中不可或缺的一部分,也是很重要的一部分,那么目前对XML的解析工具类,也有很多,现在广泛使用主要有4中解析方式,D

    相关 轻松解析XML的工具类

    \[b\]\[color=green\]\[size=large\]在我们的各种项目中,XML文件读取与解析非常频繁,正是因为有了XML文件,才使得我们的程序架构更加灵活,我们

    相关 JFinal上手demo

    jfinal初上手,搭建demo小项目。 推荐语 > JFinal 极速开发 > > JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其