使用JAXB(XJC)生成的类中的Android(Use JAXB (xjc) generated

2019-07-31 09:57发布

我使用的是Rest-WebserviceAndroid 。 将Web Service可以处理JSONXML的API被描述为XSD 。 所以我用JAXB生成的类XSD ,然后我用杰克逊JSON处理器生成JSON从我的实例。

的问题是, JAXBxjc )与生成的类JAXB注释和Android不能处理的那些。 我试图添加jaxb-api.jar到我的Android项目,但在Dalvik不会用核心类。

我的第一个执行我手动删除注释。 但现在的XSD进行了更新,我不希望这发生这种情况,每次做。

你有任何想法如何以更好的方式来处理这个问题? 有没有办法使用的可能性jaxb/xjc没有注释或有另一种代码generater,可以做到这一点? 你知道一个简单的方法来移除Java类(即使他们在多行打印)注释吗? 是否有一个项目设置为Android Eclipse项目,这使得在Dalvik允许核心库?

THX,cathixx

Answer 1:

我不得不做一些额外的研发,使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>


Answer 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>


文章来源: Use JAXB (xjc) generated classes in android