文章目录

  • 前言
  • 一、本地XML解析
    • 1、导包并配置
      • 1、在项目下新建lib文件夹,并把jar包导入。
      • 2、更改项目配置
    • 2、编写一个简单的本地XML文件
    • 3、解析本地XML文件:
  • 二、解析网络上的XML文件
    • 1.网址:
    • 2、来解析此网络XML文件
  • 3、DOM4J - XPATH解析XML
    • 1、路径表达式
    • 2、使用步骤
      • 3、利用上述Book案例
  • 总结
    • DOM4J解析XML
    • 文档对象 Document:指的是加载到内存的 整个XML文档.
    • 元素对象 Element

前言

今天,我们利用DOM4J 对xml文件进行解析。分别对本地的xml文件和网络上的xml文件进行解析。


提示:以下是本篇文章正文内容。

一、本地XML解析

1、导包并配置

1、在项目下新建lib文件夹,并把jar包导入。

2、更改项目配置


  • 接下来
  • 选中添加刚才创建的Libraries
  • 应用之后如图所示:

2、编写一个简单的本地XML文件

  • 里面保存了两本图书名字和简介
<?xml version="1.0" encoding="UTF-8" ?>
<Books><book id="1001"><name>水浒传</name><info>《水浒传》是第一部描写农民起义的小说,全书围绕“官逼民反”这一线索展开情节,表现了一群不堪暴政欺压的“好汉”揭杆而起,聚义水泊梁山,直至接受招安致使起义失败的全过程。</info></book><book id="1002"><name>西游记</name><info>《西游记》是中国古代第一部浪漫主义章回体长篇神魔小说。现存明刊百回本《西游记》均无作者署名。清代学者吴玉搢等首先提出《西游记》作者是明代吴承恩。</info></book>
</Books>

3、解析本地XML文件:

     //获取输入流FileInputStream fis = new FileInputStream("src/demo.xml");//创建XML读取对象SAXReader sr = new SAXReader();//读取得到文档对象Document doc = sr.read(fis);//通过文档获取根元素Element root = doc.getRootElement();//开始解析元素System.out.println(root.getName());//获取所有子元素List<Element> es = root.elements();for(int i=0; i<es.size(); i++) {Element book = es.get(i);System.out.println("《"+book.elementText("name")+"》");System.out.println(book.elementText("info"));System.out.println("----------------------------");}
  • 输出结果如下:
Books为根元素。
Books
《水浒传》
《水浒传》是第一部描写农民起义的小说,全书围绕“官逼民反”这一线索展开情节,表现了一群不堪暴政欺压的“好汉”揭杆而起,聚义水泊梁山,直至接受招安致使起义失败的全过程。
----------------------------
《西游记》
《西游记》是中国古代第一部浪漫主义章回体长篇神魔小说。现存明刊百回本《西游记》均无作者署名。清代学者吴玉搢等首先提出《西游记》作者是明代吴承恩。
----------------------------

二、解析网络上的XML文件

1.网址:

http://apis.juhe.cn/mobile/get?%20phone=xxxxxx&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253
(xxxxx填写电话号码即可)

本api是可以通过电话号码可以查询到此号码的归属地的xml文件
例如此号码:

2、来解析此网络XML文件

//1. 获取到XML资源的输入流String phone = "xxxxxx";URL url = new URL("http://apis.juhe.cn/mobile/get? phone=" + phone + "&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");URLConnection conn = url.openConnection();InputStream is = conn.getInputStream();// 2. 创建一个XML读取对象SAXReader sr = new SAXReader();// 3. 通过读取对象 读取XML数据,并返回文档对象Document doc = sr.read(is);// 4. 获取根节点Element root = doc.getRootElement();//5. 解析内容String code = root.elementText("resultcode");if ("200".equals(code)) {Element result = root.element("result");String province = result.elementText("province");String city = result.elementText("city");if (province.equals(city)) {System.out.println("手机号码归属地为:" + city);} else {System.out.println("手机号码归属地为:" + province + " " + city);}} else {System.out.println("请输入正确的手机号码");}

刚刚的xml文件读取结果为:

手机号码归属地为:江苏 常州

3、DOM4J - XPATH解析XML

1、路径表达式

通过路径快速的查找一个或一组元素

  • / : 从根节点开始查找
  • // : 从发起查找的节点位置 查找后代节点 ***
  • . : 查找当前节点
  • … :查找父节点
  • @ : 选择属性. *
    属性使用方式:
    - [@属性名=‘值’]
    - [@属性名>‘值’]
    - [@属性名<‘值’]
    - [@属性名!=‘值’]

2、使用步骤

通过Node类的两个方法,
来完成查找: (Node是 Document 与 Element 的父接口)
方法1.

//根据路径表达式, 查找匹配的单个节点
Element e = selectSingleNode("路径表达式");

方法2.

List<Element> es = selectNodes("路径表达式");

3、利用上述Book案例

代码如下:

//获取输入流FileInputStream fis = new FileInputStream("src/demo.xml");//创建XML读取对象SAXReader sr = new SAXReader();//读取得到文档对象Document doc = sr.read(fis);/***  //通过文档获取根元素*         Element root = doc.getRootElement();*         //开始解析元素*         System.out.println(root.getName());*         //获取所有子元素*         List<Element> es = root.elements();*///通过文档对象+xpath,查找所有的name节点List<Node> names = doc.selectNodes("//name");for(int i=0; i<names.size(); i++) {Node book = names.get(i);//System.out.println("《"+book.elementText("name")+"》");System.out.println(book.getText());System.out.println("----------------------------");}
水浒传
----------------------------
西游记
----------------------------Process finished with exit code 0

还记得book的xml文件,每本书都有个id,加上属性条件后:

List<Node> names = doc.selectNodes("//book[@id='1001']//name");

此处因为只查找一个,所以可以使用:Node name = doc.selectSingleNode("//book[@id=‘1001’]//name");

输出结果:

水浒传
----------------------------

总结

以上就是xml文件的解析过程。是用DOM4J解析XML的方式。此外还有三种方法:SAX解析、DOM解析、JDOM解析。

DOM4J解析XML

步骤:

  1. 引入jar文件
    dom4j.jar
  2. 创建一个指向XML文件的输入流
    FileInputStream fis = new FileInputStream(“xml文件的地址”);
  3. 创建一个XML读取工具对象
    SAXReader sr = new SAXReader();
  4. 使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象
    Document doc = sr.read(fis);
  5. 通过文档对象, 获取XML文档中的根元素对象
    Element root = doc.getRootElement();

文档对象 Document:指的是加载到内存的 整个XML文档.

常用方法:

  1. 通过文档对象, 获取XML文档中的根元素对象 Element root = doc.getRootElement();
  2. 添加根节点 Element root = doc.addElement(“根节点名称”);

元素对象 Element

指的是XML文档中的单个节点. 常用方法:

  1. 获取节点名称
    String getName();
  2. 获取节点内容
    String getText();
  3. 设置节点内容
    String setText();
  4. 根据子节点的名称 , 获取匹配名称的第一个子节点对象.
    Element element(String 子节点名称);
  5. 获取所有的子节点对象
    List elements();
  6. 获取节点的属性值
    String attributeValue(String 属性名称);
  7. 获取子节点的内容
    String elementText(String 子节点名称);
  8. 添加子节点
    Element addElement(String 子节点名称);
  9. 添加属性
    void addAttribute(String 属性名,String 属性值);

xml文件解析 (DOM4J解析XML) -java相关推荐

  1. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  2. XML及使用dom4j解析XML

    XML(Extensible Markup Language)表示可扩展的标记语言 XML的标签没有被预定义,也就是说不是固定的,用户可以根据自身的需求去自定义标签 XML的作用主要是用来存储数据和传 ...

  3. 对xml文件的sax解析(增删改查)之一

    crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...

  4. pymavlink 源码剖析(一)之XML文件的数据解析

    文章目录 1 引言 2 pymavlink 的代码自动生成方法 3 XML 文件的数据解析 3.1 XML 文件预处理 3.2 解析 XML 的数据 3.2.1 依据协议版本初始化一些版本特征变量 3 ...

  5. 生成XML文件的步骤 解析XML文件

    ##生成XML文件的步骤 1.初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2.设置序列化器的参数 serializer. ...

  6. 第20讲:Mybatis 中 XML 文件是如何解析的?

    大家好,我是田哥 本文是MyBatis源码分析系列文章的第20篇讲,本文主要内容:MyBatis 中 XML 文件是如何解析的? 从这一节开始,我们讲开启MyBatis源码分析阶段,下面我们以xml方 ...

  7. python读取xml文件信息_python读取xml文件方法解析

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...

  8. matlab对xml文件操作,Matlab读写xml文件

    xml文件以文档对象模型表示,简称DOM(Document Object Model).在Matlab中,使用xmlread读取xml文件成DOM节点,对xml文件的操作转化成对DOM节点的操作,使用 ...

  9. 检查xml文件中包含非法xml字符的个数(

    xml中需要过滤的字符分为两类,一类是不允许出现在xml中的字符,这些字符不在xml的定义范围之内.另一类是xml自身要使用的字符,如果内容中有这些字符则需被替换成别的字符. 第一类字符 对于第一类字 ...

  10. python读取xml文件内容_python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...

最新文章

  1. java听课笔记(十五)之 网络编程
  2. ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据
  3. Begin to use Tex Example (from others)
  4. ElasticSearch的filter原理深度剖析
  5. ecshop始终显示全部分类
  6. (转)通过 Javacore 诊断线程挂起等性能问题
  7. 小瓜牛漫谈 — 获取资源文件
  8. go分析和kegg分析_一些GO及KEGG分析的知识
  9. 麻雀的叫声matlab文件,诱捕麻雀叫声mp3下载|
  10. 台式计算机没有声音图标,win7电脑没有声音扬声器图标不见了怎么办?
  11. HCIP-H12-221练习题
  12. leetcode 寻找峰值
  13. 设计按钮、下拉框、文本框的测试用例要点
  14. 四、函数的基本概念和使用
  15. 高德地图自己录制导航声音备份及恢复方法
  16. 【LeetCode】55. 跳跃游戏 (JavaScript)
  17. Java算法大全_java贪心算法几个经典例子
  18. 基础数学复习(3)——曲线拟合
  19. 计算机音乐谱告白气球乐谱,天谕手游告白气球乐谱代码是什么-天谕手游告白气球乐谱代码分享_快吧手游...
  20. MATLAB 串口通信

热门文章

  1. WEB开发基础篇 ---- 进阶篇CSS3学习
  2. 利用python的turtle库写生日祝福
  3. 202003关于手机设备、系统、型号排名等信息
  4. 利用python和DOS获取wifi密码
  5. 百度CarLife开发备忘
  6. 获取当前scn号scn1_Oracle 系统改变号SCN详解
  7. 拍室内人像,这4个技巧请收好
  8. WIN10提示 需要提供管理员权限才能复制此文件夹
  9. UML类图10分钟快速入门 - From 圣杰
  10. Comparable排序