我使用的是Rest-Webservice
中Android
。 将Web Service
可以处理JSON
和XML
的API被描述为XSD
。 所以我用JAXB
生成的类XSD
,然后我用杰克逊JSON
处理器生成JSON
从我的实例。
的问题是, JAXB
( xjc
)与生成的类JAXB
注释和Android
不能处理的那些。 我试图添加jaxb-api.jar
到我的Android项目,但在Dalvik不会用核心类。
我的第一个执行我手动删除注释。 但现在的XSD
进行了更新,我不希望这发生这种情况,每次做。
你有任何想法如何以更好的方式来处理这个问题? 有没有办法使用的可能性jaxb/xjc
没有注释或有另一种代码generater,可以做到这一点? 你知道一个简单的方法来移除Java类(即使他们在多行打印)注释吗? 是否有一个项目设置为Android
Eclipse
项目,这使得在Dalvik允许核心库?
THX,cathixx
我不得不做一些额外的研发,使cathixx的答复工作,因为我是新来的蚂蚁,所以我会分享这个帮助别人。
这些说明将采取的Java文件中包含的代码:
import javax.xml.bind.annotation.XmlElement;
@XmlRootElement
public class Response {...
...和评论这些事件的,所以它看起来像:
/*import javax.xml.bind.annotation.XmlElement;*/
/*@XmlRootElement*/
public class Response {...
首先,创建一个文件build.xml
(或任何你想称呼它-必须是.XML)在一个新的Eclipse项目(一个“常规”项目是罚款)。
然后,添加下面的文字到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文件单击鼠标右键,然后单击“运行AS-> Ant构建”。
你应该看到输出如下:
Buildfile: D:\Eclipse_Projects\StripAnnotations\build.xml
commentOutXmlAnnotations:
BUILD SUCCESSFUL
Total time: 403 milliseconds
......和XML进口和注释要注释您的文件。
完成!
注意:如果要包括所有*.java
build.xml文件中的所有子目录中的文件(例如,注释掉所有的XML注释/为一堆多个软件包JAXB类生成的进口),更改fileset
标签:
<fileset dir="." >
<include name="**/*.java" />
</fileset>
现在,我解决了这个问题由我通过评论与下面的所有注释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>