|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。
Java经常使用工具,如剖析、计时和声响
良多年前,当我仍是高中生的时分,我曾思索以小说作家作为我的职业寻求,我定阅了一本WritersDigest杂志。我记得个中有篇专栏文章,是关于“太小而难以保留的线头”,专栏作者形貌厨房储物抽屉中放满了没法分类的玩艺儿。这句话我一向铭刻在心,它恰好用来形貌本文的内容,本系列的最初一篇(最少今朝是如许)。
Java平台就充斥了如许的“线头”—有效的命令行工具和库,年夜多半Java开辟职员乃至都不晓得,更别提利用了。个中良多没法分别到之前的5件事系列的编程分类中,但不论如何,实验一下:有些说不定会在您编程的厨房抽屉中占得一席之地。
1.StAX
在千禧年摆布,当XML第一次呈现在良多Java开辟职员眼前时,有两种基础的剖析XML文件的办法。SAX剖析器实践是由程序员对事务挪用一系列回调办法的年夜型形态机。DOM剖析器将全部XML文档到场内存,并切割成团圆的对象,它们毗连在一同构成一个树。该树形貌了文档的全部XMLInfoset暗示法。这两个剖析器都出缺点:SAX太初级,没法利用,DOM价值太年夜,特别关于年夜的XML文件—整个树成了一个庞然年夜物。
侥幸的是,Java开辟职员找到第三种办法来剖析XML文件,经由过程对文档建模成“节点”,它们能够从文档流中一次掏出一个,反省,然后处置或抛弃。这些“节点”的“流”供应了SAX和DOM的两头地带,名为“StreamingAPIforXML”,大概叫做StAX。(此缩写用于辨别新的API与本来的SAX剖析器,它与此同名。)StAX剖析器厥后包装到了JDK中,在javax.xml.stream包。
利用StAX相称复杂:实例化XMLEventReader,将它指向一个格局优秀的XML文件,然后一次“拉出”一个节点(一般用while循环),检察。比方,在清单1中,枚举出了Ant机关剧本中的一切方针:
清单1.只是让StAX指向方针
import java.io.*;
import javax.xml.namespace.QName;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.stream.util.*;
public class Targets
{
public static void main(String[] args)
throws Exception
{
for (String arg : args)
{
XMLEventReader xsr =
XMLInputFactory.newInstance()
.createXMLEventReader(new FileReader(arg));
while (xsr.hasNext())
{
XMLEvent evt = xsr.nextEvent();
switch (evt.getEventType())
{
case XMLEvent.START_ELEMENT:
{
StartElement se = evt.asStartElement();
if (se.getName().getLocalPart().equals("target"))
{
Attribute targetName =
se.getAttributeByName(new QName("name"));
// Found a target!
System.out.println(targetName.getValue());
}
break;
}
// Ignore everything else
}
}
}
}
}
StAX剖析器不会交换一切的SAX和DOM代码。但一定会让某些义务简单些。特别对完成不必要晓得XML文档全部树布局的义务相称便利。
请注重,假如事务对象级别太高,没法利用,StAX也有一个初级API在XMLStreamReader中。只管大概没有浏览器有效,StAX另有一个XMLEventWriter,一样,另有一个XMLStreamWriter类用于XML输入。
<p>
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开 |
|