当前位置: 首页 > 面试题库 >

具有“未知”名称的JAXB映射元素

申屠宗清
2023-03-14
问题内容

我有一个无法控制其生成方式的XML。我想通过将其分解为我手工编写的类来创建一个对象。

其结构的一个片段如下所示:

<categories>
    <key_0>aaa</key_0>
    <key_1>bbb</key_1>
    <key_2>ccc</key_2>
</categories>

我该如何处理这种情况?当然,元素数是可变的。


问题答案:

如果使用以下对象模型,则每个未映射的key_#元素都将保留为org.w3c.dom.Element的实例:

import java.util.List;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.w3c.dom.Element;

@XmlRootElement
public class Categories {

    private List<Element> keys;

    @XmlAnyElement
    public List<Element> getKeys() {
        return keys;
    }

    public void setKeys(List<Element> keys) {
        this.keys = keys;
    }

}

如果任何元素对应于使用@XmlRootElement批注映射的类,则可以使用@XmlAnyElement(lax =
true),已知元素将转换为相应的对象。有关示例,请参见:

  • http://bdoughan.blogspot.com/2010/08/using-xmlanyelement-to-build-generic.html


 类似资料:
  • 问题内容: 我有一个类似的xml: 我想将元素映射到类MyBean中的属性 有什么办法可以做到吗?我正在使用JDK 1.6随附的jaxb 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB(JSR-222) 专家组的成员。 使用任何JAXB(JSR-222)实现 使用任何JAXB(JSR-222)实现,您都可以使用来映射此用例。 ThetaValue

  • 我无法在不了解根元素的情况下取消 XML 的编组。例如。 或 等等... 我想在类上映射解组结果,例如: 我总是需要修复< code>@XmlRootElement。< br >我搜索了如何在运行时设置@XmlRootElement,但没有成功。知道吗? 我在Spring Batch上下文中,我可以使用我选择的解组器。 注意:我不能使用这里显示的< code>@XmlElementDecl或< c

  • 问题 你有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使得你的代码难以阅读, 于是你想通过名称来访问元素。 解决方案 collections.namedtuple() 函数通过使用一个普通的元组对象来帮你解决这个问题。 这个函数实际上是一个返回 Python 中标准元组类型子类的一个工厂方法。 你需要传递一个类型名和你需要的字段给它,然后它就会返回一个类,你可以初始化这个类,为你定义

  • 仅当我从 XML 文件内的所有元素中删除“bpmn:”时,此代码才有效,否则它会引发以下异常: javax.xml.bind.UnmarshalException:意外元素(URI:"http://www.omg.org/spec/BPMN/20100524/MODEL",local:"定义") 我试图在不修改XML文件的情况下使其工作。任何帮助将不胜感激。提前致谢 :)

  • 问题内容: 因此,我试图封送对象的一般列表,但我希望每个列表都具有特定的XmlRootElement(name ..)。我这样做的方式,我知道如果没有为每种类型的对象编写特定的包装器类并声明XmlRootElement,这实际上是不可能的。但是也许还有另一种方式…? 考虑以下类别: 如预期的那样,将产生: 我想要的是能够修改标签名称,具体取决于我创建EntityList所使用的实体的类型。 我知道

  • 名称映射规则 跟名称相关的函数包含在 xorm.io/xorm/names 下。名称映射规则主要负责结构体名称到表名和结构体 field 到表字段的名称映射。由 names.Mapper 接口的实现者来管理,xorm 内置了三种 Mapper 实现:names.SnakeMapper , names.SameMapper和names.GonicMapper。 SnakeMapper 支持struc