无需任何配置的 JAXB 编组/解组

发布于 2024-10-08 11:00:17 字数 238 浏览 9 评论 0原文

我正在尝试通过 JAXB 编组/解组 Java ValueObject 类。

为此,我发现它需要 XML Schema 文件和 ObjectFactory 类 可以由ant自动创建。

如果是这样,它似乎能够在没有 XML 模式的情况下进行编组/解组 file 和 ObjectFactory,因为它们可以自动创建。

但只要我研究了一下,不知何故JAXB并没有提供方法。

你知道有什么方法可以做到吗?

I'm trying to marshal/unmarshal Java ValueObject class through JAXB.

To do it, I found that it requires XML Schema file and ObjectFactory class
that can be automatically created by ant.

If so, it seems to be able to get marshaled/unmarshaled WITHOUT XML Schema
file and ObjectFactory, because they can be automatically created.

But as long as I researched, somehow JAXB doesn't provide the way.

Do you know any way to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

心是晴朗的。 2024-10-15 11:00:18

JAXB 不需要模式,它被设计为从 Java 对象开始。然后,您可以添加注释来自定义到 XML 的映射。下面是一些有用的入门示例:

查看我的博客,了解更多以 Java 对象开头的 JAXB 示例:

JAXB does not require a schema, it is designed to start from Java objects. You then add annotations to customize the mapping to XML. Below are some useful examples to get started:

Check out my blog for more JAXB examples that start with Java objects:

只想待在家 2024-10-15 11:00:18

我认为你的理解部分正确。如果您是从 Java ValueObject 类开始,那么就不需要模式......您可以参考 Blaise 指出的示例。
但有时,ValueObject 类并没有提供给您。相反,给出了 xml 模式定义。因此,正如您所说,使用 ANT...您可以从 xml 模式生成 ValueObject 类。

因此,在您的情况下进行迭代,因为您已经有了 ValueObject,所以不需要模式

Your understanding is partially correct in my opinion. If you are starting from the Java ValueObject class, then there is no need for schema...you can refer to the example pointed by Blaise.
But sometimes, the ValueObject class is not given to you. Instead an xml schema definition is given. So using ANT as you say....you can generate the ValueObject class from the xml schema.

So to iterate, in your case, since you have ValueObject already, no need for schema

旧瑾黎汐 2024-10-15 11:00:18

我不是 JAXB 专家,但您可以使用此构造函数创建解组器:

编辑-抱歉代码错误 xD

JAXBContext jaxbContext = JAXBContext.newInstance(Class1.class, Class2.class, ...);
Marshaller marshaller = jaxbContext.createMarshaller();

在这个问题中

在 Weblogic Server 中使用 JAXB 解组

您可以看到我在 XML 的解组中使用了 weblogic JAX-RPC 自动生成的类。没有 ObjectFactory,这对我来说工作......没有属性。我认为 JAXB 使用反射来做到这一点。尝试使用此构造函数进行解组。如果它不是解决方案,请使用注释(按照 Blaise 链接)如果无法修改 ValueObject 类,请考虑组合。

i'm not an expert in JAXB but you can create the unmarshaller whith this constructor:

EDIT- sorry wrong code xD

JAXBContext jaxbContext = JAXBContext.newInstance(Class1.class, Class2.class, ...);
Marshaller marshaller = jaxbContext.createMarshaller();

In this question

Use JAXB unmarshalling in Weblogic Server

You can see that i use a weblogic JAX-RPC autogenerated classes in the unmarshall of a XML. There are not ObjectFactory and this work for me... without attributes. I suposse that JAXB uses reflection to do this. Try to unmarshall with this constructor. If its not a solution use the annotations (follow Blaise link) Think in composition if you can't modify ValueObject class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文