草庐IT

maven-jaxb-plugin

全部标签

java - 如何使用 JAXB 编码消除元素/属性中自动生成的命名空间前缀

问题如何在使用JAXB编码时消除出现在所有元素和属性上的自动生成的命名空间前缀我已经展示了编码后的当前XML输出和预期输出。详情我正在使用JDK1.6更新21提供的默认JaxB实现(Metro)。我的XSD文件如下所示。我使用xjc为此XSD生成Java类,我不想添加/更改任何生成的Java类中的注释,以便我可以继续使用xjc。在代码中,这就是我编码的方式......我使用ObjectFactory等创建MYJAVAOBJECTREE的地方......JAXBContextjcDXD=JAXBContext.newInstance(MDASJ.class);QNameqn=newQNa

java - JAXB 测试手工制作的 bean

我有一大堆手工制作的JAXB注释文件和一些手工制作的xsd文件。我还有一些示例xml文件,它们应该创建大多数JAXBbean并设置大多数字段。如何测试是否设置了所有重要(95%)属性?我不想手动测试每个bean的每个属性。如果手工制作的bean与xsd文件匹配,我是否也可以或作为替代测试? 最佳答案 有几种方法可以处理这个问题,最终应该为您提供某种自动化;但这完全取决于您的类和XSD的复杂程度。我将从使用JAXB的schemagen开始针对您已经拥有的一组类(class)。它可能需要您可能必须添加到当前代码库中的其他注释。有了该XS

java - 评估 JAXB

我有几个关于JAXB的问题:解析有哪些选项?我可以轻松实现/插入我自己的解析器吗?有效性如何?假设我有一个宽松的解析器,它对模式有点宽松。我还能创建(无效的)对象结构吗?JAXB是否提供特殊的方法来做,例如对对象的验证?我想解析一个“无效”的对象结构,用一些算法修复它,然后验证(在Java中)。JAXB是否提供了其他方法来对对象执行奇特的操作(例如访问者模式)。内存占用情况如何?对于10-100MB的XML文件,对象表示(忽略解析)是否可行?感谢涵盖此类问题的优秀教程,Google仅显示粗略的概述。 最佳答案 以下是我对您问题的回答

java - 我们可以为多个包中的一组 xsd 生成 JAXB 类吗?

我有一个xsd,其中嵌入了几个子XSD(使用“xsd:include”。)(但每个xsd都属于相同的命名空间)。我被要求在单独的子包(每个子XSD一个子包)而不是一个包中生成jaxb类。根据我目前阅读的内容,我们可以添加jaxb:schemaBindings到这些单独的xsds并在单独的包中生成类,如果只有那些xsds属于不同的命名空间。但在我的例子中,我想做的是在几个子包中为一组属于相同命名空间的xsds创建类。你能帮我用JAXB做这个吗?编辑:我已经添加了一些关于我的问题的描述来澄清它。我所有的XSD都有以下header。因此相同的命名空间。假设我的架构文件名为A.xsd、B.xs

java - JAXB : how to read the xsi:type value when unmarshalling

我在XSD/XML到Java的方向上使用JAXB。我的XSD包含派生类型,我必须解码的XML包含xsi:type属性。查看代码JAXB(默认的Sun实现)已经生成(用于解码)似乎没有方法来获取这些属性。是不是因为我总能对解码的Java对象执行getClass()并找到实际的类?不过,根据我提供给JAXBContext.newInstance的包或类,是否可以实例化一些基类?(一个是对应于xsi:type属性的实际值的类的父类(superclass))。在这种情况下,可能需要能够读取XML实例中出现的实际属性的值。 最佳答案 JAXB

java - 在某些情况下如何忽略/禁用/恢复/覆盖 JAXB 类级 @XmlJavaTypeAdapter?

我们的模型类使用@XmlJavaTypeAdapter注释(在类级别)。解码对根元素和包含/嵌套(根据我们在自定义XmlAdapter中实现的内容)很好地工作。到目前为止,我们是XML和JSON序列化/反序列化的快乐露营者。但是,出现了一个新的需求,我不知道如何实现它?在某些情况下,我希望能够“恢复”为包含的默认JAXB行为:我希望忽略/覆盖类级别的@XmlJavaTypeAdapter注释。我花了几个小时阅读BlaiseDoughan的博客(http://blog.bdoughan.com/)并搜索StackOverflow和Google,但找不到优雅/实用的解决方案。这里是一个快速

xml - JAXB Unmarshalling - 是否可以在不使用模式验证的情况下限制元素的出现?

我是JAXB的新手并且继承了一个项目,该项目使用它来编码/解码xml-已经使用各种JAXB注释编写了自定义验证-目前没有使用模式。我需要在解码时添加一些验证以检查给定元素是否只出现一次-从周围搜索看起来它通常是在xsd中使用“maxOccurs=1”实现的-所以我的问题是这可以使用任何JAXB验证来实现注释?例如(为简单起见的缩短版本)-当前最后一个值“NameThree”被取消编码,但当存在超过1个名称元素时我想要验证错误。@XmlAccessorType(XmlAccessType.FIELD)publicclassPerson{@XmlElement(name="NAME",re

java - JAXB:根据元素值解码到子类

我正在尝试使用包含项目列表的JAXB解析XML文件。项目的类别取决于XML中元素的值。这是一个遗留系统,我无法轻易更改输入格式。例如,给定以下XML和类定义:aa1a2@XmlRootElement(name="root")publicclassRoot{@XmlElementStringtype;@XmlElement(name="item")Listitems;}publicclassItem{}publicclassItemAextendsItem{@XmlElementStringa;}publicclassItemBextendsItem{@XmlElementStringb

java - JAXB 规范 : XmlAnyAttribute collision with explicit mapped attribute 是怎么说的

场景考虑以下类(省略导入):@XmlAccessorType(XmlAccessType.NONE)@XmlRootElementpublicclassTest{@XmlAttributepublicintid;@XmlAnyAttributepublicMapany;}当我执行以下操作时的行为是什么:Testt=newTest();t.id=5;t.any=newHashMap();t.any.put(newQName("id"),"10");JAXBContextjc=JAXBContext.newInstance(Test.class);Marshallerm=jc.create

java - 使用 JAXB 从未编码的 java 对象获取 xml 元素名称

我的Java模型中的字段注释@XmlElement(name="xxx")。有没有办法以编程方式获取xml元素名称? 最佳答案 假设我们有注释实体@XmlRootElementpublicclassProduct{Stringname;@XmlElement(name="sss")publicvoidsetName(Stringname){this.name=name;}}下面的代码将使用javaReflectionAPI打印“sss”.这里'product'是Product类的一个对象importjava.lang.reflect