如何将多个元素映射到 JAXB 中的单个类
我在输入上有以下 XML:
<root>
<response1></response1>
</root>
或
<root>
<response2></response2>
</root>
并且可能有很多响应标签,我需要将每个标签映射到单个响应类,因为它们具有几乎相同的结构。
在 JAXB 中做起来容易吗?
谢谢。
I have following XML on input:
<root>
<response1></response1>
</root>
or
<root>
<response2></response2>
</root>
And there is possibly a lot of response tags each of which I need to map to a single Response class because they have almost the same structure.
Is it easy to do in JAXB?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这可以通过
@XmlElements
注释来完成:This could be done with the
@XmlElements
annotation:嗯,当然。在 XSD 文件中,首先定义一个类型:
现在使用它定义您的元素:
Well, sure. In XSD file, define a type first:
Now define your elements using it:
我让它以这种方式工作。它使用 XMLStreamReader 作为源,和一个 StreamReaderDelegate在元素名称到达 jaxb 之前拦截并重写它们。
主要测试类:
Response
类是:这个包中还有一个 jaxb.index 文件,它声明了 Response 类:
Response
测试的输出是:
这有什么帮助吗?
I got it to work this way. It uses an XMLStreamReader as the source, and a StreamReaderDelegate to intercept and rewrite the element names before they reach jaxb.
The main test class:
The
Response
class is:And there's a jaxb.index file in this package too, that declares the Response class:
Response
The output of the test is:
Is this any help?
在我看来,最简单的事情是将响应元素设置为架构中的无界列表,然后一旦创建了绑定,您就可以迭代响应节点列表。
The easiest thing to do imo would be to make the response element an unbounded list in your schema then once you have created your bindings you can iterate throught the list of response nodes.
我尝试使用具有上述相同格式的 JAXB 将多个标签映射到单个类。
现在使用它定义您的元素:
I tried to map multiple tag to single class using JAXB with same format mention above.
Now define your elements using it: