用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 命名 ...
随机推荐
- Android 开发 监听back并且执行home键功能
方法一: 在activity中重写onBackPressed()方法 ,注意此处一定要注释或者删除 super.onBackPressed();方法 @Override public void onB ...
- GIT教程的好文章
Git 教學(1):Git的基本使用 Git 教學(2):Git Branch 的操作與基本工作流程 Git 情境劇:告訴你使用 Git 時什麼情況該下什麼指令
- IntelliJ IDEA 关闭多余项目
在开发中 一个项目中可能会有多个子项目,切换起来比较麻烦,需要将用不到的项目关掉 1.就是关闭一个Project中多个module的一个 2.右击要关闭项目,选中弹出窗口中的 Load/Unload ...
- python 之修饰器
from functools import update_wrapper def debug(func): def wrapper(): print "[DEBUG]: enter {}() ...
- cached_property的使用
cached_property修饰过的函数,变成是对象的属性,该对象第一次引用该属性时,会调用函数,对象第二次引用该属性时就直接从词典中取了,这也说明引用属性是经过__getattritue__. c ...
- python大法好——Python SMTP发送邮件
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- idea的环境设置
IDEA的个人配置与常用操作 IDEA的个人配置 1.修改代码编辑器 新版的IDEA默认使用vim编辑器(linux下的一个工具),虽然熟练掌握后可以提高工作效率,但是学习成本很大,不习惯的可以选择关 ...
- DataGridView操作小记(1)
1.获取总列数 int Column_num = DataGridView1.ColumnCount; 2.获取总行数 int Column_num = DataGridView1.RowCount; ...
- Maven 打包项目 部署到服务器 重启服务 插件
1.maven插件wagon-maven-plugin自动部署远程Linux服务器 (http://xxgblog.com/2015/10/23/wagon-maven-plugin/) <p ...
- Java_监听文件夹或者文件是否有变动
package org.testWatch.Watch; import java.nio.file.FileSystems; import java.nio.file.Path; import jav ...