Java web xml文件读取解析方式
其实解析xml文件有四种方式:DOM,JDOM,DOM4J,SAX。
我们来说与平台无关的两种官方解析方式:DOM 和 SAX
一、DOM 解析
在 Java 代码中,xml 文件是标记型文档,这时用 dom 来解析 xml 文件 dom 会根据 html 的层级结构在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
DOM 解析步骤:
1、使用 newInstance 方法,创建一个 DocumentBuilderFactory 的对象。
2、创建一个 DocumentBuilde r对象,通过 DocumentBuilder 的对象的 parse[]
方法加载 xml 文件到当前项目下,如:
DocumentBuilder db=dbf.newDocumentBuilder();
Document document=db.parse(uri);
3、获取 xml 文件
NodeList booklist = document.getElementsByTagName(节点名称);
4、用foreach方法进行遍历
5、解析子节点
NodeList childnode=book.getChildNodes();可用childnode.item(k).getNodeType()==Node.ELEMENT_NODE这个方法进行判断以区分text类型的node以及element类型的node。
DOM 解析的优点:可以很方便实现增删改的功能
缺点:如果文件过大,造成内存溢出
二、SAX 解析
在 Java 中,SAX 解析采用事件驱动,边读边解析,从上到下,一行一行的解析,解析到某一个对象,返回对象名称。而且当SAX解析结束,不会保存任何XML文档的数据。
SAX 解析步骤:
1、创建一个 SAXParserFactory 对象。
SAXParserFactory factory = SAXParserFactory.newInstance();
2、创建一个 SAXParser 对象通过 parse 方法加载 xml 文件。
SAXParser parser = factory.newSAXParser();
这时与DOM的区别是这里需要一个 handler,此时需要创建一个 handler 类。
3、handler 类需要继承 DefaultHandler。
SAX 解析的优点:如果文件过大,不会造成内存溢出,方便实现查询操作;
缺点:不能实现增删改操作;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
时间: 2020-03-10
本文由Markdown语法编辑器编辑完成. 1. 需求分析: 已知当在调用某一webservice的服务时,如果调用成功,会接受到该服务的返回XML串.后端在获取了该XML原始串时,需要进行解析,将其解析为JSON格式,以便于发送到前台,供前台页面显示和交互. 2. 解决方案: 该XML的原始形式为:
这篇文章主要介绍了JavaWeb工程web.xml基本配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.理论准备 先说下我记得xml规则,必须有且只有一个根节点,大小写敏感,标签不嵌套,必须配对. web.xml是不是必须的呢?不是的,只要你不用到里面的配置信息就好了,不过在大型web工程下使用该文件是很方便的,若是没有也会很复杂. 那么web.xml能做的所有事情都有那些?其实,web.xml的模式(Schema)文件中定义了多
web.xml 文件中一般包括 servlet, spring, filter, listenr的配置.那么他们是按照一个什么顺序加载呢?加载顺序会影响对spring bean 的调用. 比如filter需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null:首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关. web.xml 中 listener 和 serverlet 的加载顺序为 先 listener
本文实例讲述了Java访问WebService返回XML数据的方法.分享给大家供大家参考.具体如下: import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.io.FileNotFoundException; import java.io
1. 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义). 所有部署描述符文件的顶层(根)元素为web-app.请注意,XML元素不像HTML,他们是大小写敏感的.因此,web-App和WEB-APP
一. Web.xml详解: (一) web.xml加载过程(步骤) 首先简单说一下,web.xml的加载过程. 当我们去启动一个WEB项目时,容器包括(JBoss.Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来. 启动WEB项目的时候,容器首先会去它的配置文件web.xml读取两个节点: 和<
需求说明 做项目时,为了省事,起初把初始化的配置都放在每个类中 static加载,初始化配置一多,就想把它给整理一下,这里使用servlet中的init方法初始化. web.xml说明 首先了解下web.xml中元素的加载顺序: 启动web项目后,web容器首先回去找web.xml文件,读取这个文件 容器会创建一个 ServletContext ( servlet 上下文),整个 web 项目的所有部分都将共享这个上下文 容器将 转换为键值对,并交给 servletContext 容器创建 中的
一. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将转换为键值对,并交给servletContext. 4.容器创建中的类实例,创建监听器. 二. load-on-startup 元
复制代码 代码如下: class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例) //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化 public String p_Field = "父类--变量"; // 静态初始化块 static { S
Android LayoutInflater加载布局详解 对于有一定Android开发经验的同学来说,一定使用过LayoutInflater.inflater()来加载布局文件,但并不一定去深究过它的原理,比如 1.LayoutInflater为什么可以加载layout文件? 2.加载layout文件之后,又是怎么变成供我们使用的View的? 3.我们定义View的时候,如果需要在布局中使用,则必须实现带AttributeSet参数的构造方法,这又是为什么呢? 既然在这篇文章提出来,那说明这三
在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行. 所以,在这里,我们可以对其进行很多优化工作. 放置在BODY底部 为了让渲染引擎能够及早的将DOM树给渲染出来,我们需要将script放在body的底部,让页面尽早脱离白屏的现象,即会提早触发DOMContentLoaded事件. 但是由于在IOS Safari, Android browser以及IOS webview里面即使你把js脚本放到
守护进程模式 使用python开发后台服务程序的时候,每次修改代码之后都需要重启服务才能生效比较麻烦. 看了一下Python开源的Web框架(Django.Flask等)都有自己的自动加载模块功能(autoreload.py),都是通过subprocess模式创建子进程,主进程作为守护进程,子进程中一个线程负责检测文件是否发生变化,如果发生变化则退出,主进程检查子进程的退出码(exist code)如果与约定的退出码一致,则重新启动一个子进程继续工作. 自动重新加载模块代码如下: autorel
网上关于androidx的fragment懒加载文章已经有很多,各有侧重.几乎都点到了sexMaxLifecycle和修改FragmentPagerAdapter.很少看到经过实践的文章,谨以此文,更加详尽的把实践后的结果记录下来,赠予有缘人. 一.前置准备工作 几个关于androidx的fragment懒加载方案,都离不开如下几个包: androidx.fragment:fragment:1.1.0-alpha07 以上,支持setMaxLifecycle方法即可 androidx.viewp
基础概念 Classloader 类加载器,用来加载 Java 类到 Java 虚拟机中.与普通程序不同的是.Java程序(class文件)并不是本地的可执行程序.当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader. JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,BootstrapClassLoader是用本地代码实现
在jquery中实现ajax加载的方法有很多种,不像以前的js的ajax只有那一种,下面我们介绍jquery ajax实现局部加载方法总结,有需要了解的朋友可参考. 例 $.ajax({ url: "hotelQuery!queryHotelByCity.action", type: "post", dataType: "html", data: "queryHotel.city="+cityobj.value+"&
对于学c的朋友来说,for循环可能使我们经常用到的一种循环语句 for(表达式1:表达式2:表达式3){循环体} 知道其的语句执行顺序对我们来说可以避免很多失误 我们可以利用下面这个小程序轻易测出其内在的语句循环顺序: #include void main() { int i; for (printf("#1\n"),i=1; printf("#2\n"),i<=5; printf("#3\n"),i++) {