java - 在将数据转换为 XML 之前对其进行预处理?

标签 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?现在就检查一下。

最佳答案

这似乎与你想要的类似,只是一个想法

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/

相关文章:

java - mongodb 和 java 驱动程序重建对象

javascript - 无法使用 DOM PHP 正确创建 xml

java - 使用 Java 对无序 XML 进行排序

java - JAXB 覆盖 package-info.java : What should be "namespace"?

java - 请求中带有 jaxb null 对象的 Spring WS

java - 我认为我的 BFS 将所有有效坐标添加到列表中,而不仅仅是最短路径

java - Eclipse 格式化。在为 block 打开大括号之前删除新行

java - 用 Java 将多个图像上传到面板上

Python。如何使用 libxml2 获取属性值

java - 无法让 MOXy (JAXB) 在我的应用程序中工作