8

で使用してRest-WebserviceAndroidます。はおよびWeb Serviceを処理でき、API は として記述されます。そのため、以前は からクラスを生成し、次に jacksonプロセッサを使用してインスタンスから生成しました。JSONXMLXSDJAXBXSDJSONJSON

問題は、JAXB( ) が注釈付きのxjcクラスを生成し、それらを処理できないことです。Android プロジェクトにを追加しようとしましたが、Dalvik はコア クラスを使用しません。JAXBAndroidjaxb-api.jar

最初の実装では、注釈を手動で削除しました。しかし、今XSDは更新されており、これが発生するたびにこれを実行したくありません。

この問題をより良い方法で処理する方法はありますか? 注釈なしで使用する可能性はありますjaxb/xjcか、またはこれを実行できる別のコード ジェネレーターはありますか? Java クラスから注釈を削除する簡単な方法を知っていますか (それらが複数行に出力されている場合でも)。Android Eclipsedalvik がコア ライブラリを使用できるようにする、プロジェクトのプロジェクト設定はありますか?

thx、キャシックス

4

2 に答える 2

5

Antを初めて使用するので、cathixxの回答を機能させるために追加の調査を行う必要があったので、他の人を助けるためにこれを共有します。

これらの手順では、次のようなコードのJavaファイルを使用します。

import javax.xml.bind.annotation.XmlElement;

@XmlRootElement
public class Response {...

...そしてこれらの出来事をコメントアウトするので、次のようになります:

/*import javax.xml.bind.annotation.XmlElement;*/

/*@XmlRootElement*/
public class Response {...

まず、build.xml新しいEclipseプロジェクト(「一般」プロジェクトで問題ありません)にファイル(または、名前を付けたいものは.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>

*.javaXMLインポートとアノテーションをコメントアウトするファイルをbuild.xmlファイルと同じディレクトリに配置します。

Eclipseでbuild.xmlファイルを右クリックし、[実行]->[Antビルド]をクリックします。

次のような出力が表示されます。

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>
于 2012-11-14T17:29:47.540 に答える
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>
于 2012-09-10T14:42:28.687 に答える