仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1573|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:XML设置文件的读取(sax)

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,xml在比来的一个MIS项目中,为了不硬编码,我必要把一些设置信息写在一个设置文件中.思索到是J2EE项目,J2EE的设置文件
仿佛都是xml文件了,再用传统ini文件是否是有点后进了?
ok,就用xml做设置文件吧.
我的设置文件reportenv.xml以下,对照复杂:
<?xmlversion="1.0"encoding="utf-8"?>
<reportenv>
<datasource>
<username>sqlname</username>
<password>password</password>
</datasource>
</reportenv>
如今的成绩是我用甚么来读取设置信息?
如今盛行的是dom4j和sax,我之前一向用dom4j.但是weblogicworkshop自带的是sax,我又不想再引进包了,因而就是sax吧.
第一步:ConfigParser.java
/*
*CreateDate:2005-6-13
*CreateBy:板桥里人
*purpose:xml设置文件属性读取器
*/
packagecom.infoearth.report;
importorg.xml.sax.Attributes;
importorg.xml.sax.helpers.DefaultHandler;
importorg.xml.sax.SAXException;
importjava.util.Properties;
publicclassConfigParserextendsDefaultHandler{
////界说一个Properties用来寄存属性值
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());
}
}

第二步:ParseXML.java
/*
*CreateDate:2005-6-13
*CreateBy:板桥里人李春雷修正
*purpose:xml设置文件属性读取器(通用),
*/

packagecom.infoearth.report;
importjava.util.Properties;
importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;
importjava.net.URL;
publicclassParseXML{
//界说一个Properties用来寄存属性值
privatePropertiesprops;
publicPropertiesgetProps(){
returnthis.props;
}
publicvoidparse(Stringfilename)throwsException{
//将我们的剖析器对象化
ConfigParserhandler=newConfigParser();
//猎取SAX工场对象
SAXParserFactoryfactory=SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
//猎取SAX剖析
SAXParserparser=factory.newSAXParser();
try{
//将剖析器息争析对象xml接洽起来,入手下手剖析
parser.parse(filename,handler);
//猎取剖析乐成后的属性
props=handler.getProps();
}finally{
factory=null;
parser=null;
handler=null;
}
}
}
第三步:ReadConfigXml.java
/*
*CreateDate:2005-6-13
*CreateBy:李春雷
*purpose:xml设置文件属性读取器
*/
packagecom.infoearth.report;
importjava.util.Properties;
publicclassReadConfigXml
{
privatePropertiesprops;

publicReadConfigXml(Stringurl){
ParseXMLmyRead=newParseXML();
try{
myRead.parse(url);
props=newProperties();
props=myRead.getProps();
}catch(Exceptione){
e.printStackTrace();
}
}
publicStringgetUserName(){
returnprops.getProperty("username");
}
publicStringgetPassWord(){
returnprops.getProperty("password");
}
}

ok,弄定了,读取的时分以下:
ReadConfigXmlxmlread=newReadConfigXml("reportenv.xml");
Stringusername=xmlread.getUserName();
Stringpassword=xmlread.getPassWord();
前两个类完成了xml文档属性设置的恣意读取.只需是xml的属性值,都读到了property中,你只需在property中提取就能够了.
第三个类是我针对我的xml文件写的,仿佛有点过剩.呵呵.实在有难言之隐.由于不想过量的修改之前的程序架构,就画蛇添
足了一下.
别的,感激j道,感激板桥里人.


市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
山那边是海 该用户已被删除
沙发
 楼主| 发表于 2015-1-21 10:59:59 | 只看该作者
是一种突破用户端机器环境和CPU
小女巫 该用户已被删除
板凳
发表于 2015-1-22 16:12:55 | 只看该作者
是一种突破用户端机器环境和CPU
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-31 07:33:45 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-2 22:33:33 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
柔情似水 该用户已被删除
6#
发表于 2015-2-8 16:16:28 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-25 20:42:40 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小魔女 该用户已被删除
8#
发表于 2015-3-1 20:32:41 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
爱飞 该用户已被删除
9#
发表于 2015-3-10 23:15:39 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
老尸 该用户已被删除
10#
发表于 2015-3-16 22:18:38 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
活着的死人 该用户已被删除
11#
发表于 2015-3-17 09:08:59 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
变相怪杰 该用户已被删除
12#
发表于 2015-3-24 04:33:49 | 只看该作者
是一种为 Internet发展的计算机语言
小妖女 该用户已被删除
13#
发表于 2015-4-5 00:18:31 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
若相依 该用户已被删除
14#
发表于 2015-4-7 16:17:31 | 只看该作者
是一种突破用户端机器环境和CPU
不帅 该用户已被删除
15#
发表于 2015-4-12 03:50:26 | 只看该作者
是一种使用者不需花费很多时间学习的语言
莫相离 该用户已被删除
16#
发表于 2015-4-13 05:20:51 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
第二个灵魂 该用户已被删除
17#
发表于 2015-4-17 01:13:29 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
透明 该用户已被删除
18#
发表于 2015-4-22 03:55:10 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
再现理想 该用户已被删除
19#
发表于 2015-5-7 14:29:10 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
兰色精灵 该用户已被删除
20#
发表于 2015-6-3 20:58:41 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-12 08:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表