仓酷云

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

[学习教程] JAVA网页编程之JAVA的XML编程(dom)

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

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

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

x
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。dom|xml|编程XML作为环球通用的布局化言语,愈来愈受人们喜爱,各类开辟平台(好比MicrosoftStudio系列、Oracle系列、InpriseBorland系列等)也都把撑持XML开辟作为宣扬标语之一。因为笔者所处置的电子政务开辟较早的引进了XML,以是尝到了很多长处,在很多项目中使用XML数据互换信息,省往了很多贫苦事,不必制订繁锁的数据格局,使用XML数据易于表达,也利于一线开辟者跟踪调试。
笔者先前也曾宣布过相干的文章,好比《简析Delphi中的XML编程》一文,有乐趣的读者能够到Google网(http://www.google.com)往搜刮一下,有良多媒体转载。明天笔者想切磋的是关于JAVA中的XML编程,但愿对正在或想要进修XML编程的新老读者有所匡助。
在XML使用中,最经常使用也最有用的莫过于XML文件的读写,以是笔者经由过程一个复杂的XML文件读写来作扼要剖析。能够在任何文本编纂器中先创建以下布局的XML文件,相似于HTML布局,但XML语义对照严厉,肇端标志必需配对,好比"〈先生混名册〉"与"〈/先生混名册〉"对应,空格几可不用在乎,但一样平常都以缩格情势誊写,便于浏览。把此文件定名为Input.xml,能够在任何撑持XML的扫瞄器中翻开测试一下,假如输出准确,在扫瞄中能够看到此文件的树形暗示布局。假如您还对XML布局感应对照生疏,倡议先看看《简析Delphi中的XML编程》一文中关于XML文件的申明。
Input.xml
代码:

<?xmlversion="1.0"encoding="GB2312"?>
<先生混名册>
<先生性别="男">
<姓名>李华</姓名>
<岁数>14</岁数>
<德律风>6287555</德律风>
</先生>
<先生性别="男">
<姓名>张三</姓名>
<岁数>16</岁数>
<德律风>8273425</德律风>
</先生>
</先生混名册>


筹办事情做完后,接着就入手下手写本色性的JAVA代码了。为保留从XML文件读进的信息,必要先建一个复杂的Bean来保留先生信息,定名为StudentBean,代码以下所示:
StudentBean.java
代码:

publicclassStudentBean{
privateStringsex;//先生性别
privateStringname;//先生姓名
privateintage;//先生岁数
privateStringphone;//德律风号码

publicvoidsetSex(Strings){
sex=s;
}
publicvoidsetName(Strings){
name=s;
}
publicvoidsetAge(inta){
age=a;
}
publicvoidsetPhone(Strings){
phone=s;
}
publicStringgetSex(){
returnsex;
}
publicStringgetName(){
returnname;
}
publicintgetAge(){
returnage;
}
publicStringgetPhone(){
returnphone;
}
}


以后写XML的测试类,
TESTXml.java
代码:


importjava.io.*;//Java基本包,包括各类IO操纵
importjava.util.*;//Java基本包,包括各类尺度数据布局操纵
importjavax.xml.parsers.*;//XML剖析器接口
importorg.w3c.dom.*;//XML的DOM完成
importorg.apache.crimson.tree.XmlDocument;//写XML文件要用到

publicclassXMLTest{
Vectorstudent_Vector;
XMLTest(){

}

//为了保留多个先生信息,还得借助一个汇合类(并非纯真意义上的汇合,JAVA中的汇合是汇合框架的观点,包括向量、列表、哈希表等),这里接纳Vector向量类。界说在XMLTest测试类中,定名为student_Vector。然后界说两个办法readXMLFile和writeXMLFile,完成读写操纵。代码以下:
privatevoidreadXMLFile(StringinFile)throwsException{
//为剖析XML作筹办,创立DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
DocumentBuilderdb=null;
try{
db=dbf.newDocumentBuilder();
}
catch(ParserConfigurationExceptionpce){
System.err.println(pce);//出非常时输入非常信息,然前进出,下同
System.exit(1);
}

Documentdoc=null;
try{
doc=db.parse(inFile);
}
catch(DOMExceptiondom){
System.err.println(dom.getMessage());
System.exit(1);
}
catch(IOExceptionioe){
System.err.println(ioe);
System.exit(1);
}
//上面是剖析XML的全历程,对照复杂,先取根元素"先生混名册"
Elementroot=doc.getDocumentElement();
//取"先生"元素列表
NodeListstudents=root.getElementsByTagName("先生");
for(inti=0;i<students.getLength();i++){
//顺次取每一个"先生"元素
Elementstudent=(Element)students.item(i);
//创立一个先生的Bean实例
StudentBeanstudentBean=newStudentBean();
//取先生的性别属性
studentBean.setSex(student.getAttribute("性别"));
//取"姓名"元素,上面类同
NodeListnames=student.getElementsByTagName("姓名");
if(names.getLength()==1){
Elemente=(Element)names.item(0);
Textt=(Text)e.getFirstChild();
studentBean.setName(t.getNodeValue());
}

NodeListages=student.getElementsByTagName("岁数");
if(ages.getLength()==1){
Elemente=(Element)ages.item(0);
Textt=(Text)e.getFirstChild();
studentBean.setAge(Integer.parseInt(t.getNodeValue()));
}

NodeListphones=student.getElementsByTagName("德律风");
if(phones.getLength()==1){
Elemente=(Element)phones.item(0);
Textt=(Text)e.getFirstChild();
studentBean.setPhone(t.getNodeValue());
}

student_Vector.add(studentBean);
}
}

privatevoidwriteXMLFile(StringoutFile)throwsException{
//为剖析XML作筹办,创立DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
DocumentBuilderdb=null;
try{
db=dbf.newDocumentBuilder();
}
catch(ParserConfigurationExceptionpce){
System.err.println(pce);
System.exit(1);
}

Documentdoc=null;
doc=db.newDocument();

//上面是创建XML文档内容的历程,先创建根元素"先生混名册"
Elementroot=doc.createElement("先生混名册");
//根元素增加上文档
doc.appendChild(root);

//取先生信息的Bean列表
for(inti=0;i<student_Vector.size();i++){
//顺次取每一个先生的信息
StudentBeanstudentBean=(StudentBean)student_Vector.get(i);
//创建"先生"元素,增加到根元素
Elementstudent=doc.createElement("先生");
student.setAttribute("性别",studentBean.getSex());
root.appendChild(student);
//创建"姓名"元素,增加到先生上面,下同
Elementname=doc.createElement("姓名");
student.appendChild(name);
TexttName=doc.createTextNode(studentBean.getName());
name.appendChild(tName);

Elementage=doc.createElement("岁数");
student.appendChild(age);
TexttAge=doc.createTextNode(String.valueOf(studentBean.
getAge()));
age.appendChild(tAge);

Elementphone=doc.createElement("德律风");
student.appendChild(phone);
TexttPhone=doc.createTextNode(studentBean.getPhone());
phone.appendChild(tPhone);
}
//把XML文档输入到指定的文件
FileOutputStreamoutStream=newFileOutputStream(outFile);
OutputStreamWriteroutWriter=newOutputStreamWriter(outStream);
((XmlDocument)doc).write(outWriter,"GB2312");
outWriter.close();
outStream.close();
}

//最初到场测试主函数,以下:
publicstaticvoidmain(String[]args)throwsException{
//创建测试实例
XMLTestxmlTest=newXMLTest();
//初始化向量列表
xmlTest.student_Vector=newVector();

System.out.println("入手下手读Input.xml文件");
xmlTest.readXMLFile("Input.xml");

System.out.println("读进终了,入手下手写Output.xml文件");
xmlTest.writeXMLFile("Output.xml");
System.out.println("写进完成");
System.in.read();
}
}

了,保留好StudentBean和XMLTest,把Input.xml保留到事情目次下。假如您输出很细心,没敲错字母的话,能够看到"写进完成"了,往瞧瞧Output.xml文件和Input.xml文件是否是一样吧。假如您在调试过程当中发明有甚么成绩,接待经由过程E-Mail:nbDeveloper@hotmail.com与笔者获得接洽。[/code]


C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
深爱那片海 该用户已被删除
沙发
发表于 2015-1-21 11:08:29 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
柔情似水 该用户已被删除
板凳
发表于 2015-1-25 21:42:00 来自手机 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
灵魂腐蚀 该用户已被删除
地板
发表于 2015-1-29 15:13:36 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
变相怪杰 该用户已被删除
5#
发表于 2015-2-6 02:18:59 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
兰色精灵 该用户已被删除
6#
发表于 2015-2-11 06:32:07 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
爱飞 该用户已被删除
7#
发表于 2015-2-11 08:30:10 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
不帅 该用户已被删除
8#
发表于 2015-2-19 02:43:15 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
山那边是海 该用户已被删除
9#
发表于 2015-3-6 12:08:49 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
admin 该用户已被删除
10#
发表于 2015-3-13 00:49:21 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
再现理想 该用户已被删除
11#
发表于 2015-3-18 09:02:33 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
分手快乐 该用户已被删除
12#
发表于 2015-3-20 19:23:44 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
精灵巫婆 该用户已被删除
13#
发表于 2015-3-26 15:44:34 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
若天明 该用户已被删除
14#
发表于 2015-3-27 02:08:09 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
飘飘悠悠 该用户已被删除
15#
 楼主| 发表于 2015-3-27 22:09:38 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
小女巫 该用户已被删除
16#
发表于 2015-4-1 02:11:35 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
小妖女 该用户已被删除
17#
发表于 2015-4-1 07:19:48 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
愤怒的大鸟 该用户已被删除
18#
发表于 2015-4-12 16:24:27 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
若相依 该用户已被删除
19#
发表于 2015-4-22 20:19:29 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
再见西城 该用户已被删除
20#
发表于 2015-4-30 20:34:45 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-22 07:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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