我正在使用 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?现在就检查一下。
最佳答案
这似乎与你想要的类似,只是一个想法
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>
关于java - 在将数据转换为 XML 之前对其进行预处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235902/