1、用JDOM解析节点名和节点值

1、创建一个SAXBuilder对象

2、创建一个输入流, 将xml文件加载到文件中

3.   通过saxBuilder的方法,将输入流加载到saxBuilder

4.   通过document对象获取xml文件的根节点

5.   获取根节点下的子节点的List集合(蓝色部分)

6、获取子节点的子节点的List集合(黄色部分)

7、如果遇到了乱码可以修改xml文件的编码,或者用InputStreamReader承接(红色部分)

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List; import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder; public class JDOMTest { public static void main(String[] args) {
//进行对book.xml的JDOM解析
//准备工作
//1、创建一个SAXBuilder对象
SAXBuilder saxBuilder = new SAXBuilder();
InputStream in;
try {
//2、创建一个输入流, 将xml文件加载到文件中
in = new FileInputStream("src/res/book.xml");
       //InputStreamReader isr = new InputStreamReader(in, "UTF-8");
//3.通过saxBuilder的方法,将输入流加载到saxBuilder
Document document = saxBuilder.build(in);
//4.通过document对象获取xml文件的根节点
Element element = document.getRootElement();
//5.获取根节点下的子节点的List集合
List<Element> bookList = element.getChildren();
//继续进行解析
for(Element book: bookList) {
          //bookList.indexOf(book)得到book元素在bookList之中的位置,可以输出序号
                System.out.println("----------------开始解析第" + (bookList.indexOf(book) + 1)
+ "本书---------------");
//解析book的属性
List<Attribute> attributes = book.getAttributes();
for(Attribute attr: attributes) {
//获取属性值(知道属性名)
//String value = book.getAttributeValue("id");
//获取属性名和属性值(不知道属性名)
String attrName = attr.getName();
String attrValue = attr.getValue();
System.out.println("属性名" + attrName + " 属性值" + attrValue);
}

//对book节点的子节点的节点名和节点值的遍历
//在JDOM中每个节点都有getChildren方法,都可以通过getName和getValue
//获取节点名和节点值
List<Element> bookChildren = book.getChildren();
for (Element bookChild : bookChildren) {
  System.out.println("属性名:" + bookChild.getName()
  + " 属性值:" + bookChild.getValue());
}

                System.out.println("----------------结束解析第" + (bookList.indexOf(book) + 1)
+ "本书---------------");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }

8、存入book类中,在上一篇《用SAX方法解析xml文件》中有代码,这里不再赘述,传送门:https://www.cnblogs.com/songaodi/p/9323830.html

9、在使用JDOM过程中,如果要把你的java工程export其他电脑上,jar包不会跟随工程export,因为它只是引用了jar包,那么怎么让jar包跟着工程走呢?往下看

(1)、把jar包取消导入,点击remove

(2)我们发现程序报错了,因为找不到包了

(3)在工程下建一个folder,把jar包复制过来

(4)选中jar包加入工程Build Path --->Add JARs

(5)完成了!!!

10、用DOM4J解析节点名和节点值

package cn.edu.zzuli.DOM4JTest;

import java.io.File;
import java.util.Iterator;
import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class DOM4J { public static void main(String[] args) {
//解析xml文件
//创建SAXReader的对象reader
SAXReader reader = new SAXReader();
try {
//通过reader对象的read方法加载book。xml文件
Document document = reader.read(new File("src/res/book.xml"));
//通过document的getRootElement获取根节点
Element bookstore = document.getRootElement();
//遍历根节点的子节点,用Element对象的elementIterator获取子节点的迭代器
Iterator<Element> booksIterator = bookstore.elementIterator();
//遍历迭代器,获取根节点的信息
while(booksIterator.hasNext()) {
System.out.println("------开始遍历某本书---------");
Element book = booksIterator.next();
//获取book的属性名和属性值
List<Attribute> bookattributes = book.attributes();
for (Attribute attribute : bookattributes) {
System.out.println("属性名: " + attribute.getName() + "--属性值:"
+ attribute.getValue());
}
//遍历book节点子节点,elementIterator得到迭代器
Iterator it2 = book.elementIterator();
while(it2.hasNext()) {
Element bookChild = (Element)it2.next();
System.out.println("节点名:" + bookChild.getName() + "--节点值:"
+ bookChild.getStringValue());
}
System.out.println("------结束遍历某本书---------");
}
} catch(DocumentException e) {
e.printStackTrace();
} } }

用JDOM和DOM4J解析节点名节点值的更多相关文章

  1. Dom4J 解析xml ,类查询

    /** * 从XML文件比对,传入provinceId 返回 provinceShortName * @param provinceid * @return */ public static Stri ...

  2. soap发送报文请求和dom4j解析XML并且获得指定名称的节点信息

    package com.lzw.b2b.soap; import java.io.ByteArrayInputStream;import java.io.InputStream;import java ...

  3. dom4j解析xml获取所有的子节点并放入map中

    dom4j递归解析所有子节点 //解析返回的xml字符串,生成document对象 Document document = DocumentHelper.parseText(resultXml); / ...

  4. Java高级特性 第15节 解析XML文档(3) - JDOM和DOM4J技术

    一.JDOM解析 特征: 1.仅使用具体类,而不使用接口. 2.API大量使用了Collections类. Jdom由6个包构成: Element类表示XML文档的元素 org.jdom: 解析xml ...

  5. 对DOM,SAX,JDOM,DOM4J四种方法解析XML文件的分析

    1.DOM 与平台无关的官方解析方式 DOM是一次性把xml文件加载到内存中,形成一个节点树 对内存有要求 2.SAX java提供的基于事件驱动的解析方式 每次遇到一个标签,会触发相应的事件方法 3 ...

  6. DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比

    1. DOM(Document Object Model)文档对象模型1. DOM是W3C指定的一套规范标准,核心是按树形结构处理数据,DOM解析器读入XML文件并在内存中建立一个结构一模一样的&qu ...

  7. java xml解析方式(DOM、SAX、JDOM、DOM4J)

    XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML ...

  8. 解析xml(当节点中有多个子节点)

    概要:解析一个xml,当一个节点中又包含多个子节点如何解析,对比一个节点中不包括其他节点的情况. 一,xml样例 <cisReports batNo="查询批次号" unit ...

  9. jdom xpath定位带xmlns命名空间的节点(转)

    jdom xpath定位带xmlns命名空间的节点 2013-06-29      0个评论       作者:baozhengw 收藏    我要投稿 关键词:jdom xpath xmlns 命名 ...

随机推荐

  1. kubelet工作原理

    在调度这一步完成后,Kubernetes 就需要负责将这个调度成功的 Pod,在宿主机上创建出来,并把它所定义的各个容器启动起来.这些,都是 kubelet 这个核心组件的主要功能. kubelet ...

  2. An error occurred while starting the application.

    一..net core 发布后的站点启动报错如下 An error occurred while starting the application. .NET Core 4.6.26328.01 X6 ...

  3. Linux 下配置 nginx + 两个 tomcat 的负载均衡

    前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件    1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...

  4. Linux网络编程学习(十一) ----- 五种I/O模式(第六章)

    1.五种I/O模式是哪几个? 阻塞I/O,非阻塞I/O,I/O多路复用,信号驱动I/O(SIGIO),异步I/O 一般来讲程序进行输入操作有两个步骤,一是等待有数据可读,二是将数据从系统内核中拷贝到程 ...

  5. lnmp之Nginx配置https加密访问

    配置lnmp之Nginx网站支持https加密访问 注: 1. 这里拿购买的(pxsnx.pxjy.com)证书来做样例 证书文件共有三个---> (pxsnxg.pxjy.com_ca.crt ...

  6. Java基础知识思维导图

     

  7. 基于Keepalived的MySQL高可用

    keepalived负责的是故障转移,至于故障转以后的节点之间数据的一致性问题依赖于具体的复制模式.不管是主从.一主多从还是双主.集群节点个数.主从具体的模式无关(常规复制,半同步复制,GTID复制, ...

  8. 2017-11-11 Sa Oct 消参

    2017-11-11 Sa Oct 消参 Prior versions: 2017-11-04 Sa Oct 消参 2017-11-10 Fr Oct 消参 2017-11-04 Sa $ P(-3, ...

  9. vue mock

    如果后端不肯来帮你 mock 数据的话,前端自己来 mock 也是很简单的.你可以使用mock server 或者使用 mockjs + rap 也是很方便的. 不久前出的 easy-mock也相当的 ...

  10. Windows内核开发之串口过滤

    学习了几个月的内核编程,现在对Windows驱动开发又了更加深入的认识,特别是对IRP的分层处理逻辑有了深入认识. 总结起来就几句话: 当irp下来的时候,你要根据实际情况,进行处理 1> 无处 ...