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. 快速获取IP地址的各种方法

    调用百度的IP定位API(首先需要去百度开放平台注册申请key值http://lbsyun.baidu.com/apiconsole/key) http://api.map.baidu.com/loc ...

  2. mysql 动态行转列

    表结果:create table user( id int , username ), create_time datetime, type int ) insert into user (`id`, ...

  3. 利用IDM工具下载ESA上的Sentinel数据

    由于美国政府关门,NASA,USGS,NOAA等机构中的非核心部门也都放假了,暂时无法提供Sentinel数据下载,而直接从ESA下载数据比蜗牛上山都慢,幸好发现了IDM工具. 利用浏览器或wget工 ...

  4. 6Linux用户身份与文件权限

    3类用户身份: (1)管理员UID为0,root (2)系统用户UID为1-999:nologin不能登录系统,老版本5.6中是1-499 (3)普通用户UID为1000开始,老版本5.6中是1000 ...

  5. Python OS模块,和Open函数

    https://www.cnblogs.com/ginvip/p/6439679.html

  6. POI--各种样式的XSSFCellStyle的生成

    //背景色.フォント色.枠線より各種XSSFCellStyleの作成して.cellStyleMapに保存する private HashMap<String, XSSFCellStyle> ...

  7. WebApp与Native App有何区别呢?

                    Native App(其实就是用java其他语言开发的安卓系统或ios系统): 1.开发成本非常大. 一般使用的开发语言为JAVA.C++.Objective-C. 2 ...

  8. ORA-12541:TNS:无监听程序

    1.OracleServiceORCL确认已经在服务中启动 2.OracleOraDb11g_home1TNSListener确认已经在服务中启动 3.服务端listener.ora和tnsnames ...

  9. Django 日志输出及打印--logging

    Django使用python自带的logging作为日志打印工具. logging是线程安全的,主要分为4部分: Logger 用户使用的直接接口,将日志传递给Handler Handler 控制日志 ...

  10. superset在 centos 7安装运行

    参考:1.http://blog.csdn.net/u014729236/article/details/76302888?locationNum=2&fps=1 2.https://www. ...