1

オブジェクトを XML に保存するために JAXB を使用しています。ただし、これには1つの問題があります。クラスの1つに文字列があります

myclass.getFilePath() // returns an absolute file path

これは、絶対ファイル パスを表します。このファイル パスを XML ファイルに書き込む前に相対化したいので、getter で何らかの前処理が必要です。JAXBを使用してそれは可能ですか?

クラスを変更して追加できることはわかってgetRelativePath()setBasePath()ますが、何らかの方法でファイルパスを変換し、XML にエクスポートするときにのみこれを行うことを好みます。

アップデート:

@XmlJavaTypeAdapter(MyConverter.class)

ソリューションに近いはずですが、引数(相対パスのベースパス)を渡す方法が必要ですが、これに関するヒントはありますか?

更新 2

おそらくこれでうまくいきます:とにかく、コンストラクターのパラメーターを JAXB アダプターに渡すには? 今すぐチェックします。

4

1 に答える 1

0

これはあなたが望むものに似ているようですが、単なるアイデアです

class Adapter extends XmlAdapter<String, File> {
    @Override
    public File unmarshal(String v) throws Exception {
        return null;
    }

    @Override
    public String marshal(File v) throws Exception {
        return v.getAbsolutePath();
    }
}

public class Test1 {
    @XmlJavaTypeAdapter(Adapter.class)
    File file = new File("xxx");

    public static void main(String[] args) throws Exception {
        JAXB.marshal(new Test1(), System.out);
    }
}

出力

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<test1>
    <file>D:\workspace1\x\xxx</file>
</test1>
于 2013-04-26T12:18:33.320 に答える