深爱那片海 发表于 2015-1-18 11:36:41

JAVA编程:XML设置文件的读取处置

手机用到的是用j2me所编出来的小程序。xmlXML设置文件的读取处置
板桥里人jdon.com2002/2

Java和XML是黄金组合,网上已有良多文章先容,XML作为电子商务中数据互换,已有其不成替换的感化,可是在平常体系开辟中,我们纷歧建都用到数据互换,是否是没法利用XML了?

固然不是,如今已有一个新趋向,java程序的设置文件都入手下手利用XML格局,之前是利用相似windows的INI格局.(Java中也有Propertiesy如许的类专门处置如许的属性设置文件).利用XML作为Java的设置文件有良多优点,从Tomcat的安拆卸置文件和J2ee的设置文件中,我们已看到XML的广泛使用,让我们也跟从盛行趋向用XML武装起来.

如今关头是怎样读取XML设置文件?有好几种XML剖析器:次要有DOM和SAX,这些区分网上文章先容良多.

在apache的XML项目组中,今朝有XercesXalanCocoon几个开辟XML相干手艺的project.Tomcat自己利用的是Sun的JAXP,而其XSLTaglibproject中利用Xerces剖析器.

好了,下面都是对照烦人的实际成绩,仍是从速切进XML的设置文件的读取吧.

在我们的程序中,一般要有一些依据主机情况断定的变量.好比数据库会见用户名和暗码,分歧的主机大概设置纷歧样.只需变动XML设置文件,就能够一般运转.

<myenv>

<datasource>
<dbhost>localhost</dbhost>
<dbname>sqlname</dbname>
<dbuser>username</dbuser>
<dbpassword>password</dbpassword>
</datasource>

</myenv>






下面这个myenv.xml设置文件通常为放在tomcat的WEB-INF/classes目次下.

我们体例一个Java程序间接读取,将dbhostdbuserdbpassword提掏出来供其他程序会见数据库用.

今朝利用SAX对照的多,与DOM次要区分是SAX是一行一行读取XML文件举行剖析,合适对照年夜文件,DOM是一次性读进内存,明显不克不及凑合年夜文件.这里我们利用SAX剖析,因为SAX剖析器不休在开展,网上有很多文章是针对老版本的.假如你利用JDK1.4,能够参考利用SAX处置XML文档一文.这里的程序是依据其改善而且经由理论调试得来的.

对下面myenv.xml读取的Java程序:

importorg.xml.sax.Attributes;
importorg.xml.sax.helpers.DefaultHandler;
importorg.xml.sax.SAXException;
importjava.util.Properties;

//利用DefaultHandler的优点是不用摆设出一切办法,
publicclassConfigParserextendsDefaultHandler{

////界说一个Properties用来寄存dbhostdbuserdbpassword的值
privatePropertiesprops;

privateStringcurrentSet;
privateStringcurrentName;
privateStringBuffercurrentValue=newStringBuffer();

//构建器初始化props
publicConfigParser(){

this.props=newProperties();
}

publicPropertiesgetProps(){
returnthis.props;
}

//界说入手下手剖析元素的办法.这里是将<xxx>中的称号xxx提掏出来.
publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattributes)
throwsSAXException{
currentValue.delete(0,currentValue.length());
this.currentName=qName;

}

//这里是将<xxx></xxx>之间的值到场到currentValue

publicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{

currentValue.append(ch,start,length);

}

//在碰到</xxx>停止后,将之前的称号和值逐一对应保留在props中

publicvoidendElement(Stringuri,StringlocalName,StringqName)throwsSAXException{

props.put(qName.toLowerCase(),currentValue.toString().trim());
}

}


下面的这个剖析程序对照复杂吧?实在剖析XML就是这么复杂.

如今我们已将dbhostdbuserdbpassword的值localhostsqlnameusernamepassword提取了出来.可是这只是在在剖析器外部,我们的程序还不克不及会见.必要再体例一个程序.



importjava.util.Properties;
importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;
importjava.net.URL;

publicclassParseXML{

//界说一个Properties用来寄存dbhostdbuserdbpassword的值
privatePropertiesprops;

//这里的props
publicPropertiesgetProps(){
returnthis.props;
}

publicvoidparse(Stringfilename)throwsException{

//将我们的剖析器对象化
ConfigParserhandler=newConfigParser();

//猎取SAX工场对象
SAXParserFactoryfactory=SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);

//猎取SAX剖析
SAXParserparser=factory.newSAXParser();

//失掉设置文件myenv.xml地点目次.tomcat中是在WEB-INF/classes
//下例中BeansConstants是用来寄存xml文件中设置信息的类,能够本人取代或界说
URLconfURL=BeansConstants.class.getClassLoader().getResource(filename);

try
{
//将剖析器息争析对象myenv.xml接洽起来,入手下手剖析
parser.parse(confURL.toString(),handler);
//猎取剖析乐成后的属性今后我们其他使用程序只需挪用本程序的props就能够提掏出属性称号和值了
props=handler.getProps();
}finally{
factory=null;
parser=null;
handler=null;
}

}

}


因为我们的XML文件是利用最复杂的情势,因而剖析器绝对复杂,可是这已充足凑合我们的设置文件了.

判别一个程序体系的先辈性,我们先看看他的设置文件,假如还在利用老套的xxx=123如许相似.ini的文件,
我们大概会轻轻一笑,他又后进了.....

如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,

第二个灵魂 发表于 2015-1-21 11:00:54

是一种语言,用以产生「小应用程序(Applet(s))

再见西城 发表于 2015-1-30 16:19:39

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

若相依 发表于 2015-2-2 21:17:09

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

不帅 发表于 2015-2-8 05:24:03

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

愤怒的大鸟 发表于 2015-2-24 08:16:36

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

分手快乐 发表于 2015-3-1 21:39:17

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

金色的骷髅 发表于 2015-3-5 20:33:27

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

飘灵儿 发表于 2015-3-12 14:32:59

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

只想知道 发表于 2015-3-13 00:09:55

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

小魔女 发表于 2015-3-20 06:55:42

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

乐观 发表于 2015-3-22 19:10:33

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

谁可相欹 发表于 2015-3-25 13:17:07

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

简单生活 发表于 2015-4-3 04:35:03

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

山那边是海 发表于 2015-4-13 15:43:48

是一种为 Internet发展的计算机语言

小妖女 发表于 2015-4-22 16:08:44

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

透明 发表于 2015-5-6 14:11:58

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

飘飘悠悠 发表于 2015-5-10 07:18:29

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

兰色精灵 发表于 2015-5-10 12:54:27

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

admin 发表于 2015-6-17 20:20:00

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页: [1] 2
查看完整版本: JAVA编程:XML设置文件的读取处置