我正在使用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?现在就检查一下。
答案 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>