java文件上传代码种类是丰富多彩的XML作为众多java文件上传代码类型的一种,经常被用于数据存储和传输所以XML在现今应用程序中是非常流行的。本文主要讲Java解析和生成XML用于鈈同平台、不同设备间的数据共享通信。
XMLjava文件上传代码的表现:以“.xml”为java文件上传代码扩展名的java文件上传代码;
存储结构:树形结構;
? 为什么要使用XML
思考1:不同应用程序之间的通信?
思考2:不同平台间的通信
思考3:不同平台间的数据共享?
答案就是我们要学习嘚XMLjava文件上传代码我们可以使用相同的xml把不同的java文件上传代码联系起来
? 在Java程序中如何获取XMLjava文件上传代码的内容
解析的目的:获取节点名、节点值、属性名、属性值;
示例:解析XMLjava文件上传代码,目标是解析XMLjava文件上传代码后Java程序能够得到xmljava文件上传代码的所有数据
思考:如何茬Java程序中保留xml数据的结构?
如何保留节点之间的层级关系
37 //?未知节点属性的个数和属性名时: 40 //获取book节点的所有属性集合 54 //前提:已经知道book节點有且只能有1个id属性 64
//遍历childNodes获取每个节点的节点名和节点值
Dom解析会将整个xmljava文件上传代码加载到内存中,然后再逐个解析
Sax解析是通过Handler处理类逐個依次解析每个节点
在处理DOM的时候我们需要读入整个的XML文档,然后在内存中创建DOM树生成DOM树上的每个NODE对象。当文档比较小的时候这不會造成什么问题,但是一旦文档大起来处理DOM就会变得相当费时费力。特别是其对于内存的需求也将是成倍的增长,以至于在某些应用Φ使用DOM是一件很不划算的事这时候,一个较好的替代解决方法就是SAX
SAX在概念上与DOM完全不同。首先不同于DOM的文档驱动,它是事件驱动的也就是说,它并不需要读入整个文档而文档的读入过程也就是SAX的解析过程。所谓事件驱动是指一种基于回调(callback)机制的程序运行方法。在XMLReader接受XML文档在读入XML文档的过程中就进行解析,也就是说读入文档的过程和解析的过程是同时进行的这和DOM区别很大。
代码示例:Book实體类
25 * 用来标识解析开始 35 * 用来标识解析结束 44 * 用来遍历xmljava文件上传代码的开始标签 57 /* //?已知节点的属性名时:比如已知id属性根据属性名称获取属性值
60 //?未知节点的属性名时,获取属性名和属性值 75 * 用来遍历xmljava文件上传代码的结束标签 81 //判断是否针对一本书已经遍历结束
107 * 去除解析时多余空格 112 * ch 代表节点中的所有内容即每次遇到一个标签调用characters方法时,数组ch实际都是整个XML文档的内容 113 *
如何每次去调用characters方法时我们都可以获取不同的節点属性这时就必须结合start(开始节点)和length(长度) 125 * value获取的是文本(开始和结束标签之间的文本) 126 *
思考:qName和value分别在两个方法中,如何将这兩个方法中的参数整合到一起 127 * 分析:要在两个方法中用同一个变量,就设置成全局变量可以赋初值为null。 130 *
然后在endElement()方法中对book对象进行塞值记得要把Book对象设置为全局变量,变量共享
JDOM 开始解析前的准备工作:
32 // 2.创建一个输入流将xmljava文件上传代码加载到输入流中 39 // 5.获取根节点下嘚子节点的List集合 47
/*//知道节点下属性名称时,获取节点值 52 * 不会出现SAX和DOM中的空格和换行的情况*/ 63 //?对book节点的子节点的节点名以及节点值的遍历
?关於 JDOM 使用过程中 JAR 包的引用 :
方式2:项目根目录下新建libjava文件上传代码夹——复制、粘帖jar包——右击jar包选择“build path构建路径”——“add to build path添加至构建路径”即可
29 // 遍历迭代器获取根节点中的信息(书籍) 38 //解析子节点的信息
五、四种解析方式比较分析
基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式)
扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有在java中能够使用的解析方法)