首页 > 编程知识 正文

java 模板引擎,java源码解析

时间:2023-05-05 15:27:44 阅读:151945 作者:2890

1、流行的XML分析框架

1 )底层分析方式:编码复杂性、难以扩展、难以重用…… 想了解基础分析方式时,请了解Java XML基础分析方式

2 ) Dom4j )基于JAXP解析方式,性能优良,功能强大,使用方便的优秀框架。

3 ) Jdom :本质也基于JAXP,但是软件包结构被重新组织,API大量使用Collections类,在性能方面被dm4j推向了几个阶段。

4 ) xstream :基于xmlpull的OXMapping技术倾向于分析XML并将其映射到Java世界的对象。

2、编写简单的demo.xml文件,提供各种方式的分析

320170105000009363

0301

018574

030101

齐天

9

2008-11-07

030102

xndhlb

10

2009-04-08

030103

龙五

9

2008-11-01

420170105000007363

0302

018577

030201

马宝

10

2009-09-02

3、Dom4j、Jdom、Xstream不同的解析方式

1 ) Dom4j方式性能好,API灵活,支持XML文档的增删改操作。 只不过是以树形模型载入存储器的操作。 有可能成为未来的主流。 项目结构如下。

pom.xml

dom4j

dom4j

1.6.1

xml-apis

xml-apis

要排除xml-apis的JDK已经具有相应的类。

App.java

package com.LFY.cn.javaxmlpasaretest; importjava.io.File; importjava.text.DateFormat; importjava.text.ParseException; import Java.text.simple date format; importjava.util.ArrayList; importjava.util.List; importorg.dom4j.Document; importorg.dom4j.document exception; importorg.dom4j.Element; importorg.dom4j.io.SAXReader; /**

*/

公共类

{ publicstaticvoidmain (string [ ] args ) throwsDocumentException,ParseException{

string path=system.getproperty (user.dir ) ) (src(demo.XML );

SAXReader reader=newSAXReader (;

文档文档=读.读(new file (path ) );

liststudentgridlblist=new ArrayList (;

StudentGridlb studentGridlbVo; 对象classgridlb :文档. get rootelement ().elements('classgridlb ' ) }

元素类网格=(element ) classgridlbelb;

数据格式格式=newsimpledateformat (yyyy-mm-DD ); objectstudentgridlb : classgridlbele.element (' student grid ' ).elements ) (studentgridlb ) }

elementstudentgridlbele=(element ) studentgridlb;

sudentgridlbvo=newstudentgridlb (;

sudentgridlbvo.set stu _ id (studentgridlbele.elementtexttrim (stu _ id ) );

sudentgridlbvo.set stu _ age (integer.parseint ) studentgridlbele.elementtexttrim (stu _ age ) );

studentgridlbvo.set stu_name (studentgridlbele.elementtexttrim ) ) stu _ name );

sudentgridlbvo.set stu _ birthday (format.parse ) studentgridlbele.elementtexttrim (stu _ birthday ) );

sudentgridlblist.add (studentgridlbvo;

}

}

system.out.println (studentgridlblist;

}

}

执行结果:

2 ) Jdom需要基于树处理XML,将树加载到内存中,因此分析大文件对内存的要求很高。 支持XML文档的添加、删除、更改操作。 只不过是以树形模型加载到存储器中的操作。 分析速度还可以。

pom.xml

jdom

jdom

1.1

JdomTest.java

package com.LFY.cn.javaxmlpasaretest;

import Java.io.file not found exception;

import java.io.FileOutputStream;

import java.io.IOException;

import java.text.DateFormat;

import java.text.ParseException;

import Java.text.simple date format;

import java.util.ArrayList;

import java.util.List;

import org.jdom.Document;

import org.jdom.Element;

import org.jdom.JDOMException;

importorg.JDOM.input.sax builder;

importorg.JDOM.output.XML outputter;

//*

*

*

*/

公共类JDOM test

{

publicstaticvoidmain [ string [ ] args ] throwsparseexception,FileNotFoundException,IOException,JDOMException{

string path=system.getproperty (user.dir ) ) (src(demo.XML );

saxbuilderjdomsaxbuilder=new saxbuilder (false;

document doc=JDOM saxbuilder.build (path );

element rootelement=doc.get rootelement (;

liststudentgridlblist=new ArrayList (;

StudentGridlb studentGridlb;

物件类别网格lb : rootelement.get children (' classgridlb ' ) ) }

元素类网格=(element ) classgridlbelb;

数据格式格式=newsimpledateformat (yyyy-mm-DD );

对象网格: classgridlbele.get child (' student grid ' ).get children (for ) ) {

Element studentGridEle=(Element ) studentGrid;

studentGridlb=new StudentGridlb (;

studentgridlb.set stu _ id (studentgridele.getchildtexttrim (stu _ id ) );

studentgridlb.set stu_age (integer.parseint ) studentgridele.getchildtexttrim ) (stu _ age ) );

studentgridlb.set stu _ name (studentgridele.getchildtexttrim (stu _ name ) );

sudentgridlb.set stu_birthday (format.parse ) studentgridele.getchildtexttrim ) (stu _ birthday ) );

sudentgridlblist.add (studentgridlb;

}

}

xmloutputteroutputter=newxmloutputter (;

outputter.output(doc,newfileoutputstream ) path );

system.out.println (studentgridlblist;

}

}

3 ) Xstream :一种OXMapping技术,不需要基于注释添加辅助类或映射文件。 XML序列化并不麻烦,因为可以将JavaBean序列化为XML,也可以将XML反序列化为JavaBean。 也可以将JavaBean序列化为Json,或者反序列化,非常容易使用。 没有映射文件,而且基础上使用xmlpull推送模型分析XML,结合高性能、低内存占有率、简洁易懂的API,熟练掌握基本上是分钟的事。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。