草庐IT

java - 设置要使用的JAXB上下文工厂初始化类

我已经更新了项目(基于Websphere8.5的JavaEE),以使用公司内部框架的新版本(以及Ejb3.x部署描述符,而不是2.x部署描述符)。从那时起,我的集成测试失败,但出现以下异常:[java.lang.ClassNotFoundException:com.ibm.xml.xlxp2.jaxb.JAXBContextFactory]我可以使用先前的框架版本来构建应用程序,并且一切正常。在调试时,我注意到ContextFinder(javax.xml.bind)中有两种不同的行为:先前版本(一切正常):所有地方都没有调出工厂类,因此将加载默认工厂类com.sun.xml.inte

java - 如何在 xjc 命令行上使用 JAXB 扩展

我正在处理相关问题here,但我有一个单独的问题。也许这都是同一个问题的一部分,但看起来有所不同。由于我在通过Ant任务和外观运行XJC时遇到问题,我现在尝试使用JDK的命令行“xjc”工具运行它。在最初的问题中,我尝试使用“ElementWrapper”和“FluentAPI”扩展,所以我的命令行如下:xjc-extension-classpath"lib/jaxb-fluent-api-2.1.8.jar;lib/jaxb-xew-plugin-1.4.jar"-Xxew-summarytarget/xew-summary.txt-instantiatelazy-Xfluent-a

java - JAXB:如何使 JAXB 不将空字符串解码为 0

我有一个包含如下字段的DTO类:@XmlAttribute@NotNullprivateIntegernumber=null;我正在尝试解码xml,例如...number=""...我需要nuber字段保持为空,以便抛出验证异常。相反,JAXB将其解码为0。我怎样才能让它正常运行? 最佳答案 有争议,它是行为正确。number=""并不意味着null,它是一个空字符串,JAXB必须尝试正确处理它,并且它决定对于Integer数据类型最接近空字符串的是零。如果您想要一个null,那么应该完全省略number属性。如果你想定制这个行为,

java - JAXB Bean 生成

我使用JAXB在Maven中使用JAXB插件从XSD生成bean。这工作正常,期望代码包含每个字段的isSetXXXXXX()方法。例如对于字段firstName,它生成以下代码:@XmlElement(name="FirstName",required=true)protectedStringfirstName;publicStringgetFirstName(){returnfirstName;}publicvoidsetFirstName(StringfirstName){this.token=firstName;}publicbooleanisSetFirstName(){re

Java 到 XSD 或 XSD 到 Java

我知道,使用JAXB,您可以generateJavafilesfromanXSD你也可以generatetheXSDfromannotatedPOJOs.各自的优点和缺点是什么?一个整体上比另一个好吗?我们基本上想将事件序列化为XML格式的日志。 最佳答案 最终这取决于你想关注的地方:如果XML模式是最重要的事情那么最好从XML模式开始,生成JAXB模型。JAXB(JSR-222)实现无法生成XML模式的详细信息:除0、1或无界之外的maxOccurs一个简单类型的多个方面模范组如果对象模型是最重要的事情如果您使用Java模型的目的

java - 向从模式生成的 JAXB 类添加额外的方法

这是我的XSD文件的一个简单摘录我使用maven-jaxb2-plugin从中生成Java类。Document类有一个getTitle()方法来返回title属性的文本。我想向Document添加一个额外的方法:publicStringgetStrippedTitle(){returngetTitle().replaceAll("\\s+","");}我希望我的额外方法出现在解码对象上(而不是我只是调用它或编写包装类),因为我想将顶级解码对象传递给字符串模板并让它迭代子-调用我的额外方法的元素。我找到了instructions但他们告诉我在Unmarshaller上设置一个属性,而我的

java - 具有属性的 XML 元素在 JAXB 中具有 ":"

我在获取xml文件的属性时遇到问题。这些属性是这样写的:@XmlAttribute(name="xml:lang")使用@XmlAttribute,我得到的属性是写在一个单词上的。如果我留下这个注释@XmlAttribute(name="xml:lang")我得到null如何获取“xml:lang”的属性值?谢谢。 最佳答案 xml显然是namespaceprefix.您可以尝试使用以下方式声明命名空间:@XmlAttribute(name="lang",namespace=javax.xml.XMLConstants.XML_NS

java - 动态生成 java 源代码(没有 xjc)

有没有人设法在没有XJC的情况下从JAXB模式文件生成Java代码?有点像JavaCompilerjavaCompiler=ToolProvider.getSystemJavaCompiler()用于即时动态编译java代码。注意:在JDK6上运行,这意味着com.sun.*工具包已被弃用(感谢BlaiseDoughan的提示) 最佳答案 我必须包含一些J2EE库才能使我的解决方案正常工作,因为独立的JDK6不提供对xjc实用程序类的访问权限:importcom.sun.codemodel.*;importcom.sun.tools

java - JAXB 不解码接口(interface)列表

JAXB似乎无法读取它所写的内容。考虑以下代码:interfaceIFoo{voidjump();}@XmlRootElementclassBarimplementsIFoo{@XmlElementpublicStringy;publicBar(){y="";}publicBar(Stringy){this.y=y;}@Overridepublicvoidjump(){System.out.println(y);}}@XmlRootElementclassBazimplementsIFoo{@XmlElementpublicintx;publicBaz(){x=0;}publicBaz

java - JAXB 绑定(bind)文件 : validation error

以下JAXB绑定(bind)文件按预期创建适配器类,但Eclipse和XMLSpy说它无效:错误是这样的:cvc-complex-type.2.4.b:Thecontentofelement'jxb:globalBindings'isnotcomplete.Oneof'{"http://java.sun.com/xml/ns/jaxb":javaType,"http://java.sun.com/xml/ns/jaxb":serializable,WC[##other:"http://java.sun.com/xml/ns/jaxb"]}'isexpected.请注意,JAXB绑定(b