当前位置: 首页 > 知识库问答 >
问题:

JAXB-将@xmlvalue与令牌字段一起使用

陆博易
2023-03-14

这似乎是一个基本问题,但我无法在其他地方找到答案。如果这是一个重复的帖子,请原谅。

是否可以对标记为@XmlAccessorType(XmlAccessType. FIELD)的类进行@XmlValue注释?

我正在尝试使用JAXB解析XML文件,虽然XML本身很大并且有其他字段,但问题特定于此字段:

<root>
  ...
  <holiday holidayId="9">Christmas</holiday>
  ...
</root>

映射为:

public class Holiday extends Model {
    @XmlAttribute(name="holidayId")
    private String holidayId;
    @XmlValue
    private String holiday;
}

该字段在XML中声明为令牌类型。

@XmlValue注释给我一个IllegalAnnotationException(如果我注释掉@XmlValue和假日字段,映射可以正常工作)。为什么会失败?解决方法是什么?请告知。

共有1个答案

姬高澹
2023-03-14

是的,它应该工作没有问题。我使用了这些类:

@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

    @XmlElement(name = "holiday")
    List<Holiday> holidays;
}

.

@XmlAccessorType(XmlAccessType.FIELD)
public class Holiday {

    @XmlAttribute(name="holidayId")
    private String holidayId;

    @XmlValue
    private String holiday;
}

对我来说,它工作得很好。我将您的XML示例输入与此测试代码一起使用:

JAXBContext context = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
File file = new File("root.xml");
Root root = (Root) unmarshaller.unmarshal(file);

Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
 类似资料:
  • 是否可以对用@XmlElementRef注释的引用对象使用@XmlValue注释?目标是生成以下XML输出: 给定以下示例,JAXBContext初始化抛出NPE:at com . sun . XML . bind . v2 . runtime . property . property factory . create(property factory . Java:128) Foo类 酒吧类

  • 我有下一个html,我想解析它: 我有下一节课: 和: 现在,我还需要跨度的值(“bla-bla”)。因此,我将添加到类中: 位它给了我下一个错误: 我尝试使用@XMLMixed,但是没有成功。我会很高兴,例如代码的例子。谢了。

  • 是否有可能有一个使用值 AND 元素呈现的 JAXB 元素? 我正在尝试渲染类似下面的内容: 它甚至可能不是有效的XML,但不幸的是,我试图渲染的东西需要它,而不是可选的。 如果有一个值和元素,则会给出一个。

  • 问题内容: 我知道JAXB API的基础知识,但是我坚持尝试做的事情,而且不确定是否确实可行。详细信息如下: 我有一个名为 Book 的类,带有2个类型为String的 公共 实例变量: 我有一个名为 Bookshop 的其他类,带有1个ArrayList类型的 公共 实例变量: 注意:为了节省空间,删除了软件包声明和导入。 这两个类正常工作,我得到的输出XML类似于: 据我所知,实例变量需要声明

  • 我是一个新手程序员。我一直在制作一个非常小的网站。我没有遇到什么错误。我找到了一些解决办法。但我还没有得到答案。 如果你不介意,请给我你的触摸。T^T 我连接了节点。js with Mysql'GET正在运行,没有任何问题。但是“POST”部分无法获取我在网页上键入的一些数据。 我想知道的是,为什么“POST”无法获取数据。 错误消息 TypeError:无法读取应用程序中未定义的属性“name”

  • 问题内容: 当我需要使用LIKE%..%语句中的字段中的值时,我陷入了一个微妙的SQL问题。 例子: 这只是我脑海中的一个例子,显示了我需要做的事情(我知道这是行不通的)。我需要在LIKE%..%中使用t2.Name的值 我想这是微不足道的;) 问题答案: 使用: