我想知道是否可以让JAXB不为用作包装器的XML元素创建Java对象。例如对于如下结构的XML我不想要的对象完全被创造出来。所以对于像这样的类classRoot{privateEntityentity;}元素应直接解码到实体字段中。用JAXB可以实现吗? 最佳答案 虽然它需要额外的编码,但所需的解码是通过以下方式使用transient包装器对象完成的:@XmlRootElement(name="root")publicclassRoot{privateEntityentity;staticclassEntity{}staticcla
在我们的应用程序中有一个相当普遍的模式。我们在Xml中配置一组(或列表)对象,它们都实现一个公共(public)接口(interface)。在启动时,应用程序读取Xml并使用JAXB创建/配置对象列表。我从来没有想出(在多次阅读各种帖子之后)仅使用JAXB来执行此操作的“正确方法”。例如,我们有一个接口(interface)Fee,以及多个具体实现类,它们具有一些共同的属性,以及一些不同的属性和非常不同的行为。我们用来配置应用程序使用的费用列表的Xml是:NYSE...在上面的Xml中,每个元素对应于Fee接口(interface)的具体子类。type属性提供有关要实例化哪种类型的信息
考虑以下代码:Main.java====packagecom.sample;importcom.sample.entity.Customer;importjavax.xml.bind.JAXBContext;importjavax.xml.bind.JAXBException;importjavax.xml.bind.Marshaller;publicclassMain{publicstaticvoidmain(String[]args)throwsJAXBException{JAXBContextjc=JAXBContext.newInstance(Customer.class);C
所以现在当我使用XML模式验证XML文件时,我只能知道它是失败还是通过,如果我想知道它失败的原因,我需要查看错误消息,例如[org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:Invalidcontentwasfoundstartingwithelement'City'.Oneof'{Address1}'isexpected.]在上面的示例中,它失败了,因为我缺少标记Address1。我的问题是当验证失败时,我能知道是哪个标签导致失败吗?这是因为我需要针对每个重要缺失标签以不同方式处理这些失败。现在我的想法是FileInputStr
我有具有以下结构的Java类(类名没有任何暗示,我只是编造它们)。packagetest;importjava.util.ArrayList;importjava.util.List;importjavax.xml.bind.JAXBContext;importjavax.xml.bind.JAXBException;importjavax.xml.bind.Marshaller;importjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlAccessorType;importjava
我正在尝试使用Java以编程方式从XSD文件生成JAXB类。我使用以下代码片段来实现这一点:....importjava.io.File;importjava.io.IOException;importorg.xml.sax.InputSource;importcom.sun.codemodel.JCodeModel;importcom.sun.tools.xjc.api.S2JJAXBModel;importcom.sun.tools.xjc.api.SchemaCompiler;importcom.sun.tools.xjc.api.XJC;........publicstatic
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我已经有一段时间没有使用Java了,所以如果这很愚蠢,请原谅我。我刚刚开始一个Java项目,我们在该项目中使用JAXB对传入的XML字符串(来自Jetty服务器)进行反序列化。该项目仅针对这种情况使用JAXB。JAXB的替代品有哪些?JAXB相对于这些替代方案的优缺点是什么我进行了一些谷歌搜索并找到了很多引用资料,但是是否有一个明确的来源可以作为JAXB问题的转到位置
所以我们有一个XSD类型的形式:表示XML:xjc产生几乎正确的结果。唯一烦人的是,“Bars”被创建为一个内部类,它存储一个Bars列表。有没有办法让Bars成为Foo中的一个列表,同时仍然保留上面的XML? 最佳答案 当您将Bars定义为复杂类型时,Bars将生成为单独的类。像这样我发现模式也更容易阅读。除非您将maxOccurs更改为大于1的值,否则条形图不会在Foo中列出-您不能在xs:all上执行此操作,但可以使用xs:sequence。......运行xjc后:Foo.java:...@XmlAccessorType(X
我们有一个完全基于JAXB序列化的巨大Java应用程序。中间件服务器执行所有数据库访问并发送JAXB对象中的所有数据对象并序列化为XML并将数据发送到UI(C#.Net)。大多数时候,在数据从数据库访问填充到JAXBjava对象后,我将不得不进行一些处理,例如“根据属性对对象集合进行排序”,找到平均值,对列表进行一些计算集合中的对象等。我的主要问题是,JAXB对象没有equals和hashcode。所以我正在做的是将所有数据移动到一些用户定义的数据对象,我在其中定义了哈希码、等于、compareTo,这样我就可以在集合中执行所有操作,然后复制到JAXB对象。我认为这是额外的开销。问题:
在我的1.6.0_16JDK上工作,我使用ApacheCXF2.5.2从WSDL生成了我的stub类,它使用最新的jaxb-api2.2。我知道可以让它使用jaxb-api2.1,但为了避免兼容性问题,我宁愿让它使用当前版本。由于我的JDK具有jaxb2.1,构建失败并显示以下消息:errorat@XmlElementRef(name="protocol",namespace="urn:ch.beo.emc",type=JAXBElement.class,required=false)因此,我尝试使用以下依赖项使maven包含最新的jaxbapi和impl。javax.xml.bind