热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaxml解析jdom_Java语言中XML的JDom解析方式

本文主要向大家介绍了Java语言中XML的JDom解析方式,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。三、JDOM解析特征ÿ

本文主要向大家介绍了Java语言中XML的JDom解析方式,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

三、JDOM解析

特征:

1、仅使用具体类,而不使用接口。

2、API大量使用了Collections类。

xml文件如下:

51904ea61658fb34f93cc1aa6edd5421.png

JDOM解析如下:

public class JDOMTest {

private static ArrayListbooksList = new ArrayList();

/**

* @param args

*/

public static void main(String[] args) {

// 进行对books.xml文件的JDOM解析

// 准备工作

// 1.创建一个SAXBuilder的对象

SAXBuilder saxBuilder = new SAXBuilder();

InputStream in;

try {

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

in = new FileInputStream("src/res/books.xml");

InputStreamReader isr = new InputStreamReader(in, "UTF-8");

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

Document document = saxBuilder.build(isr);

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

Element rootElement = document.getRootElement();

// 5.获取根节点下的子节点的List集合

ListbookList = rootElement.getChildren();

// 继续进行解析

for (Element book : bookList) {

Book bookEntity = new Book();

System.out.println("======开始解析第" + (bookList.indexOf(book) + 1)

+ "书======");

// 解析book的属性集合

ListattrList = book.getAttributes();

// //知道节点下属性名称时,获取节点值

// book.getAttributeValue("id");

// 遍历attrList(针对不清楚book节点下属性的名字及数量)

for (Attribute attr : attrList) {

// 获取属性名

String attrName = attr.getName();

// 获取属性值

String attrValue = attr.getValue();

System.out.println("属性名:" + attrName + "----属性值:"

+ attrValue);

if (attrName.equals("id")) {

bookEntity.setId(attrValue);

}

}

// 对book节点的子节点的节点名以及节点值的遍历

ListbookChilds = book.getChildren();

for (Element child : bookChilds) {

System.out.println("节点名:" + child.getName() + "----节点值:"

+ child.getValue());

if (child.getName().equals("name")) {

bookEntity.setName(child.getValue());

}

else if (child.getName().equals("author")) {

bookEntity.setAuthor(child.getValue());

}

else if (child.getName().equals("year")) {

bookEntity.setYear(child.getValue());

}

else if (child.getName().equals("price")) {

bookEntity.setPrice(child.getValue());

}

else if (child.getName().equals("language")) {

bookEntity.setLanguage(child.getValue());

}

}

System.out.println("======结束解析第" + (bookList.indexOf(book) + 1)

+ "书======");

booksList.add(bookEntity);

bookEntity = null;

System.out.println(booksList.size());

System.out.println(booksList.get(0).getId());

System.out.println(booksList.get(0).getName());

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (JDOMException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!



推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
author-avatar
HANK_LIU刘浩象_862
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有