用JDOM和DOM4J解析节点名节点值
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解析节点名节点值的更多相关文章
- Dom4J 解析xml ,类查询
/** * 从XML文件比对,传入provinceId 返回 provinceShortName * @param provinceid * @return */ public static Stri ...
- soap发送报文请求和dom4j解析XML并且获得指定名称的节点信息
package com.lzw.b2b.soap; import java.io.ByteArrayInputStream;import java.io.InputStream;import java ...
- dom4j解析xml获取所有的子节点并放入map中
dom4j递归解析所有子节点 //解析返回的xml字符串,生成document对象 Document document = DocumentHelper.parseText(resultXml); / ...
- Java高级特性 第15节 解析XML文档(3) - JDOM和DOM4J技术
一.JDOM解析 特征: 1.仅使用具体类,而不使用接口. 2.API大量使用了Collections类. Jdom由6个包构成: Element类表示XML文档的元素 org.jdom: 解析xml ...
- 对DOM,SAX,JDOM,DOM4J四种方法解析XML文件的分析
1.DOM 与平台无关的官方解析方式 DOM是一次性把xml文件加载到内存中,形成一个节点树 对内存有要求 2.SAX java提供的基于事件驱动的解析方式 每次遇到一个标签,会触发相应的事件方法 3 ...
- DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比
1. DOM(Document Object Model)文档对象模型1. DOM是W3C指定的一套规范标准,核心是按树形结构处理数据,DOM解析器读入XML文件并在内存中建立一个结构一模一样的&qu ...
- java xml解析方式(DOM、SAX、JDOM、DOM4J)
XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML ...
- 解析xml(当节点中有多个子节点)
概要:解析一个xml,当一个节点中又包含多个子节点如何解析,对比一个节点中不包括其他节点的情况. 一,xml样例 <cisReports batNo="查询批次号" unit ...
- jdom xpath定位带xmlns命名空间的节点(转)
jdom xpath定位带xmlns命名空间的节点 2013-06-29 0个评论 作者:baozhengw 收藏 我要投稿 关键词:jdom xpath xmlns 命名 ...
随机推荐
- 快速获取IP地址的各种方法
调用百度的IP定位API(首先需要去百度开放平台注册申请key值http://lbsyun.baidu.com/apiconsole/key) http://api.map.baidu.com/loc ...
- mysql 动态行转列
表结果:create table user( id int , username ), create_time datetime, type int ) insert into user (`id`, ...
- 利用IDM工具下载ESA上的Sentinel数据
由于美国政府关门,NASA,USGS,NOAA等机构中的非核心部门也都放假了,暂时无法提供Sentinel数据下载,而直接从ESA下载数据比蜗牛上山都慢,幸好发现了IDM工具. 利用浏览器或wget工 ...
- 6Linux用户身份与文件权限
3类用户身份: (1)管理员UID为0,root (2)系统用户UID为1-999:nologin不能登录系统,老版本5.6中是1-499 (3)普通用户UID为1000开始,老版本5.6中是1000 ...
- Python OS模块,和Open函数
https://www.cnblogs.com/ginvip/p/6439679.html
- POI--各种样式的XSSFCellStyle的生成
//背景色.フォント色.枠線より各種XSSFCellStyleの作成して.cellStyleMapに保存する private HashMap<String, XSSFCellStyle> ...
- WebApp与Native App有何区别呢?
Native App(其实就是用java其他语言开发的安卓系统或ios系统): 1.开发成本非常大. 一般使用的开发语言为JAVA.C++.Objective-C. 2 ...
- ORA-12541:TNS:无监听程序
1.OracleServiceORCL确认已经在服务中启动 2.OracleOraDb11g_home1TNSListener确认已经在服务中启动 3.服务端listener.ora和tnsnames ...
- Django 日志输出及打印--logging
Django使用python自带的logging作为日志打印工具. logging是线程安全的,主要分为4部分: Logger 用户使用的直接接口,将日志传递给Handler Handler 控制日志 ...
- superset在 centos 7安装运行
参考:1.http://blog.csdn.net/u014729236/article/details/76302888?locationNum=2&fps=1 2.https://www. ...