Java框架组件-XML、JSON解析,日志,测试,文档,注释

Java框架组件

XML、JSON解析,日志,测试,文档,注释

[email protected]

2015年7月24日

 

1 XML/JSON与Java对象映射:XStream(推荐)

目标:将XML、JSON等交换格式与Java对象进行映射。类似Hibernate。

原理:使用不同的Driver,将XML/JSON信息提取/写入,根据映射配置与POJO转换。

方法:XStream

参考:http://x-stream.github.io/download.html

https://en.wikipedia.org/wiki/XStream

1.1 XML与POJO转换:默认Driver为Xpp3。

参考:http://x-stream.github.io/tutorial.html

1.1.1创建XStream对象:newXStream()。

需要将XStream,XPP3,XmlPull的支持。将jar要放入buildpath和webapp的lib中。

示例:

           XStream xs=new XStream();

1.1.2创建XML对应的POJO:与XML的节点对应。

classGCJPoint{

      public int status;

      public String info;

      public String locations;

}

1.1.3映射:XStream.alias(“节点名”,pojo.class)

默认的映射为类名(含包名)就是XML的节点名。

示例:

           xs.alias("response",GCJPoint.class);

1.1.4POJO-》XML:toXML()。

示例:

           //pojo to xml

           GCJPoint pt1=new GCJPoint();

           pt1.status=1;

           pt1.info="xx";

           pt1.locations="x,y";

           String strXML=xs.toXML(pt1);

1.1.5XML-》POJO:fromXML()。

示例   

      //xml to pojo

           GCJPointpt2=(GCJPoint)xs.fromXML(strResponse);

           System.out.println("fromXML=status:"+pt2.status+",info:"+pt2.info+",locations:"+pt2.locations);

1.2 JSON与POJO转换:JsonHierarchicalStreamDriver和 the JettisonMappedXmlDriver

参考:http://x-stream.github.io/json-tutorial.html

1.2.1创建XStream对象:newXStream()。

JsonHierarchicalStreamDriver只能将POJO转换为JSON。效率高,内置。

JettisonMappedXmlDriver可以双向转换。需要jettison-1.2.jar支持。

示例:

           //json writer

           XStream xsJson=new XStream(newJsonHierarchicalStreamDriver());

           //json reader

           XStream xsJson2=new XStream(new JettisonMappedXmlDriver());

1.2.2创建XML对应的POJO:与JSON的节点对应。

同XML。

1.2.3映射:XStream.alias(“节点名”,pojo.class)

同XML。

1.2.4POJO-》JSON:toXML()。

           String strJson=xsJson.toXML(pt2);

           System.out.println("toJSON="+strJson);

1.2.5JSON-》POJO:fromXML()。

           StringstrMyJson="{\"response\": {\"status\":200,\"info\": \"ok2\",\"locations\":\"116.006363,40.000666\"}}";

GCJPoint pt3=(GCJPoint)xsJson2.fromXML(strMyJson);

1.3 示例

classGCJPointTranslator{

 

      public GCJPointTranslator(StringstrResponse) {

           // TODO Auto-generated constructorstub

           XStream xs=new XStream();

           //map

           xs.alias("response",GCJPoint.class);

          

           //pojo to xml

           GCJPoint pt1=new GCJPoint();

           pt1.status=1;

           pt1.info="xx";

           pt1.locations="x,y";

           String strXML=xs.toXML(pt1);

          

           System.out.println("toXML="+strXML);

           //xml to pojo

           GCJPointpt2=(GCJPoint)xs.fromXML(strResponse);

           System.out.println("fromXML=status:"+pt2.status+",info:"+pt2.info+",locations:"+pt2.locations);

          

           //json writer

           XStream xsJson=new XStream(newJsonHierarchicalStreamDriver());

           xsJson.alias("response",GCJPoint.class);

           String strJson=xsJson.toXML(pt2);

           System.out.println("toJSON="+strJson);

           //json reader

           XStream xsJson2=new XStream(newJettisonMappedXmlDriver());

           xsJson2.alias("response",GCJPoint.class);       

           String strMyJson="{\"response\":{\"status\": 200,\"info\":\"ok2\",\"locations\":\"116.006363,40.000666\"}}";

GCJPoint pt3=(GCJPoint)xsJson2.fromXML(strMyJson);

           System.out.println("fromJSON=status:"+pt3.status+",info:"+pt3.info+",locations:"+pt3.locations);

      }

     

}

 

classGCJPoint{

      public int status;

      public String info;

      public String locations;

}

结果:

toXML=<response>

  <status>1</status>

  <info>xx</info>

  <locations>x,y</locations>

</response>

fromXML=status:1,info:ok,locations:114.006377,38.000677

toJSON={"response":{

  "status": 1,

  "info": "ok",

  "locations":"114.006377,38.000677"

}}

fromJSON=status:200,info:ok2,locations:116.006363,40.000666

2 XML解析:Dom4J

目标:解析XML中所有元素及组织级别,读写XMLL。

原理:将XML按照树形结构映射。

方法:Dom4J树形DOM结构逐级操作。较XStream(推荐)底层。

参考:http://blog.csdn.net/chenghui0317/article/details/11486271

http://sourceforge.net/projects/dom4j/

3 日志:Slf4J(推荐),Log4J2

3.1 传统日志:log4J2

参见:Java日志-Log4j2.docx

3.2 统一接口日志:SLF4J(推荐)

参见:Java日志-Slf4J.docx

4 单元测试:JUnit

参见:Java单元测试-JUnit.docx

5 自动化文档:javadoc

目标:根据程序中的注释,自动生成源码对应的帮助文档。

原理:javadoc.exe自动处理源码中的特殊注释。

方法:规则注释+javadoc自动生成文档。

示例:

/** 
* show 方法的简述. 
* <p>show 方法的详细说明第一行<br> 
* show 方法的详细说明第二行 
* @param b true 表示显示,false 表示隐藏 
* @return 没有返回值 
*/ 
public void show(boolean b) { 
frame.show(b); 

5.1 注释规则:简述、详述、特殊说明。

5.1.1简述:注释第一句为简述,以.为结束标志。

5.1.2详述:从第二句开始到特殊说明@注释之前为详述。

可以使用HTML标签。

5.1.3特殊说明:@特殊说明。

包括作者@author,版本号@version,引用@see,参数@param,返回值@return,异常@exception或@throws,JDK范围@since,废弃@deprecated。

参考:http://kelaocai.iteye.com/blog/227822

http://baike.baidu.com/link?url=wELgmIInoD-ql7c1ThToqclQi78YN0u_AyQGkK_AXAkhCrFx27r9ediDx6JbxtnW3nS81wP9z8iMk67A8O0zYa

5.2 生成文档:javadoc.exe

格式:javadoc opts packagename src

详见javadoc说明。

将在当前文件夹下生成HTML文档。

示例:

package com.test;

 

importorg.apache.logging.log4j.LogManager;

importorg.apache.logging.log4j.Logger;

importorg.slf4j.LoggerFactory;

 

 

public class TestMain {

 

      public static void main(String[] args) {

           // TODO Auto-generated method stub

           System.out.println("Hello,print");

           slf4jTest();

      }

     

      /**

       * this is simple review.

       * this is detail view.

       * <p>3rd.

       * <br>4th.

       * @param a 1st argument

       * @param b 2nd argument

       * @return sum of a and b.

       */

      public int sum(int a,int b){

           return a+b;

      }

     

      public static void log(){

           Logger logger=LogManager.getLogger();

           logger.error("this is error");

           logger.info("this is info.");

          

           Logger myLogger=LogManager.getLogger("com.test.loggerxx");

           myLogger.error("myLogger:this is error");

           myLogger.info("myLogger:this is info.");

      }

 

      public static void slf4jTest(){

           org.slf4j.Loggerlogger=LoggerFactory.getLogger("root");

           logger.error("this is error");

           logger.info("this is info.");

          

           org.slf4j.LoggermyLogger=LoggerFactory.getLogger("com.test.loggerxx");

           myLogger.error("myLogger:this is error");

           myLogger.info("myLogger:this is info.");

      }

}

 

 

5.3 Eclipse自动生成文档:自动调用javadoc。

参考:

http://zhidao.baidu.com/link?url=YXiX8TOfria0caUvzirb9rDPiHAx-ePQjLtFvqoWVIJxcTUi6lDDqMA_Ga6jXh3bqrvWcSJlMYQxWSwB68mYl_

5.3.1(推荐)Project-》genereatejavadoc,设置输出参数。

5.3.2File或项目右键->Export->java->javadoc设置输出参数。

6 自定义注释:Eclispe注释模板

目标:设置自动添加注释的模板。

方法:Eclipse注释模板。

参考:http://blog.sina.com.cn/s/blog_4080505a0101guoh.html

http://jingyan.baidu.com/article/a501d80c09dab1ec620f5e4b.html

6.1 注释模板编译器:Windows-》preference->java->code style->codetemplate->type->edit。

 

6.2 设置各种模板参数和样式:插入模板参数。

 

6.3 测试:alt+shift+J

 

你可能感兴趣的:(log4j,JUnit,javadoc,xstream,slf4j)