我在Rest-Webservice
中使用Android
。 Web Service
可以处理JSON
和XML
,API被描述为XSD
。所以我使用JAXB
从XSD
生成类,然后我使用jackson JSON
处理器从我的实例生成JSON
。
问题是,JAXB
(xjc
)会生成带有JAXB
注释的类,Android
无法处理这些注释。我试图将jaxb-api.jar
添加到我的android项目中,但Dalvik不会使用核心类。
对于我的第一个实现,我手动删除了注释。但现在XSD
已更新,我不想每次都这样做。
您是否知道如何以更好的方式处理此问题?是否有可能在没有注释的情况下使用jaxb/xjc
,或者是否有其他代码生成器可以执行此操作?您是否知道从java类中删除注释的简单方法(即使它们以多行打印)?是否有Android
Eclipse
项目的项目设置,这使得dalvik允许核心库?
thx,cathixx
答案 0 :(得分:5)
我必须做一些额外的研究才能让cathixx的答案有效,因为我是Ant的新手,所以我会分享这个来帮助别人。
这些说明将使用以下代码获取Java文件:
import javax.xml.bind.annotation.XmlElement;
@XmlRootElement
public class Response {...
...并对这些事件进行评论,因此它看起来像:
/*import javax.xml.bind.annotation.XmlElement;*/
/*@XmlRootElement*/
public class Response {...
首先,在一个新的Eclipse项目中创建一个文件build.xml
(或任何你想要的名字 - 必须是.xml)(“常规”项目很好)。
然后,将以下文本添加到build.xml
文件中:
<?xml version="1.0"?>
<project
name="CommentOutXmlAnnotations"
basedir="."
default="commentOutXmlAnnotations" >
<!-- This Ant script comments out the following lines from the Java files in this directory:
import javax.xml.bind.annotation.*;
@Xml*
-->
<target
name="commentOutXmlAnnotations"
description="Run" >
<replaceregexp
byline="false"
flags="g" >
<regexp pattern="(@Xml[A-Za-z0-9]+(\([^)]+\))?|import javax\.xml\.bind\.annotation\.[A-Za-z0-9.]+;)[ \t]*(\r?\n)" />
<substitution expression="/*\1*/\3" />
<fileset dir="." >
<include name="*.java" />
</fileset>
</replaceregexp>
</target>
</project>
将要注释的*.java
文件放在XML导入和注释中,与build.xml文件放在同一目录中。
右键单击Eclipse中的build.xml文件,然后单击“Run As-&gt; Ant Build”。
您应该看到如下输出:
Buildfile: D:\Eclipse_Projects\StripAnnotations\build.xml
commentOutXmlAnnotations:
BUILD SUCCESSFUL
Total time: 403 milliseconds
...并且应该从文件中注释XML导入和注释。
完成!
注意:如果要在build.xml文件的所有子目录中包含所有*.java
文件(例如,注释掉为多个包中的一堆JAXB类生成的所有XML注释/导入),将fileset
标记更改为:
<fileset dir="." >
<include name="**/*.java" />
</fileset>
答案 1 :(得分:2)
现在,我通过使用以下ant
脚本评论所有注释来自行解决:
<replaceregexp flags="g" byline="false">
<regexp pattern="(@Xml[A-Za-z0-9]+(\([^)]+\))?|import javax\.xml\.bind\.annotation\.[A-Za-z0-9.]+;)[ \t]*(\r?\n)"/>
<substitution expression="/*\1*/\3"/>
<fileset dir="path/to/files">
<include name="*.java"/>
</fileset>
</replaceregexp>