草庐IT

jaxb_lib

全部标签

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

java - 使用 XSLT 将一个 JAXB 对象转换为另一个

我发现了这个问题,它对我有一点帮助,但还不够:TransformFromoneJAXBobjecttoanotherusingXSLTtemplate我的是这样的:源JAXB对象我的目标JAXB对象的类我想用来将原始对象转换为目标对象的XSLT路径我正在尝试的是:/***TransformsoneJAXBobjectintoanotherwithXSLT*@paramsrcThesourceobjecttotransform*@paramxsltPathPathtotheXSLTfiletousefortransformation*@returnThetransformedobject

java - 如果 JAXB Marshals 根元素只有一个属性,则没有关闭标记

我正在使用JAXB/Moxy将类编码为XML。当根元素只包含一个属性时,输出如下:所需的输出包含过程的结束标记:这是被发送到第三方系统。即使两者都是格式正确的XML,它仍然需要结束标记。我看到这篇文章:JAXBmarshalsXMLdifferentlytoOutputStreamvs.StringWriter但在本地运行时没有看到输出流和字符串之间的输出差异。这似乎只处理元素和属性,而不处理根元素:Representnullvalueasemptyelementinxmljaxb我仍然设置了一个DescriptorCustomizer并查看了调试器中的ClassDescriptor,