在将数据转换为XML之前预处理数据?

时间:2013-04-26 11:59:02

标签: java xml jaxb preprocessor transform

我正在使用JAXB将对象保存到XML。我有一个问题:我的一个类有一个字符串

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

表示绝对文件路径。在将此文件路径写入XML文件之前,我想对其进行相对化,因此我需要在getter上进行某种预处理。这可能使用JAXB吗?

我知道我可以修改我的类并添加getRelativePath()setBasePath(),但我更愿意以某种方式转换我的文件路径,并且只在导出到XML时执行此操作。

更新

@XmlJavaTypeAdapter(MyConverter.class)

应该接近解决方案,虽然我仍然需要一种传递参数的方法(相对路径的基本路径) - 任何关于此的提示?

更新2

这可能就是这个工作:Anyway to pass a constructor parameter to a JAXB Adapter?现在就检查一下。

1 个答案:

答案 0 :(得分: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>