首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB规范: XmlAnyAttribute与显式映射属性的冲突

JAXB规范: XmlAnyAttribute与显式映射属性的冲突
EN

Stack Overflow用户
提问于 2014-01-23 23:43:09
回答 1查看 2.8K关注 0票数 4

场景

考虑以下类(省略导入):

代码语言:javascript
复制
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement
public class Test {

    @XmlAttribute
    public int id;

    @XmlAnyAttribute
    public Map<QName,String> any;

}

当我做以下事情时,会有什么行为:

代码语言:javascript
复制
Test t = new Test();
t.id = 5;
t.any = new HashMap<QName,String>();
t.any.put(new QName("id"), "10");
JAXBContext jc = JAXBContext.newInstance(Test.class);
Marshaller m = jc.createMarshaller();
m.setEventHandler(myEventHandler);
m.marshal(t, System.out);

显而易见的问题:

应该为Test实例生成一个XML元素。但显而易见的问题是:使用哪些属性?<test id="5"/>?还是<test id="10"/>?或无效的XML <test id="5" id="10"/>

请回答:

  1. 编组是否成功(还是会有例外?)
  2. handleEvent(ValidationEvent) of myEventHandler会被调用吗?如果是,用什么?
  3. 在System.out上可以期望什么,即输出XML是什么?(如果1被回答为阳性)
  4. (符合标准的) JAXB封送处理程序总是生成格式良好的XML吗?(不涉及方案)
  5. 标准库中引用实现的行为是否符合JAXB规范,该库输出<test id="5" id="10"/>并报告绝对没有错误?

请把你的答案建立在坚实的原教旨之上:

当然可以试试看。但是,人们应该能够通过研究Javadoc和JAXB规范文档来预测确切的行为。因此,如果可能的话,请引用文档来源的相关部分来支持您的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 04:03:50

备注:,我是EclipseLink JAXB (MOXy)的负责人,也是JAXB (JSR-222)专家组的成员。

哪里可以找到JAXB规范

作为参考,JAXB (JSR-222)规范可以从以下位置下载:https://jcp.org/en/jsr/detail?id=222

回答你的问题

  1. 编组是否成功(还是会有例外?) JAXB2.2规范没有涵盖此用例将发生的情况。只定义了解编组用例(参见B.3.6.2)。
  2. handleEvent(ValidationEvent)会被称为myEventHandler吗?如果是,用什么? JAXB2.2规范中没有任何要求这样做。
  3. 在System.out上可以期望什么,即输出XML是什么?(如果1被回答为阳性) 这方面的行为尚不明确。正如您所指出的,JAXB的引用和MOXy实现将输出两个名称相同的属性。
  4. (符合标准的) JAXB封送处理程序总是生成格式良好的XML吗?(不涉及方案) 你已经确定了一个不正确的案例。
  5. 标准库中引用实现的行为是否符合JAXB规范,该库输出和报告绝对没有错误? 在规范中未定义编组行为,因此JAXB的引用(和MOXy)实现的行为与规范没有冲突。

在哪里报告问题

一个经过认真开发的软件,国际水文学组织,不应对边缘情况下的行为产生怀疑。

您可以通过Jira或邮件列表提出类似的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21321665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档