草庐IT

java - 如何在没有任何相关信息的情况下通过 JAXB 编码对象?

我有一个对象value,它属于某种类型,可以是@XmlRootElement注释的,也可以不是。我想将其编码为XML:Stringvalue1="test";assertEquals("test",toXml("foo",value1));//...@XmlRootElementclassBar{publicStringbar="test";}assertEquals("test",toXml("foo",newBar()));我可以使用JAXB现有工具来完成它,还是应该创建一些自定义分析器? 最佳答案 您可以利用JAXBIntro

java - 如何配置 JAXB,使其默认修剪空格

我想配置JAXB以便它修剪所有字符串字段上的空格我看到了以下答案:HowtoconfigureJAXBsoittrimswhitespaceswhenunmarshallingtagvalue?但我不想按照建议的答案对所有字符串字段进行注释@XmlElement(required=true)@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)Stringname;谢谢! 最佳答案 创建XmlAdapter.packagecom.foo.bar;publicclassStringTr

java - 在 JaxB 中解码集合

假设我有这个类:publicclassA{privateHashMapmap;@XmlElementprivatevoidsetB(ArrayListcol){...}privateArrayListgetB(){...}}当尝试使用JaxB将xml文档解码到此类时,我注意到JaxB没有调用setB()方法并向我发送B实例列表,而是实际调用了getB()并将B实例添加到返回列表中.为什么?我想要调用setter的原因是列表实际上只是一个临时存储,我想从中构建映射字段,所以我想在setter中进行。谢谢。 最佳答案 这就是jaxb处理

java - 没有 XmlRootElement 注释的 JAXB 解码?

有什么方法可以在没有@XmlRootElement注释的情况下为类取消编码?还是我们有义务输入注释?例如:publicclassCustomer{privateStringname;privateintage;privateintid;publicStringgetName(){returnname;}@XmlElementpublicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}@XmlElementpublicvoidsetAge(intage){this.age=age;}publicin

java - JAXB 注释

我需要一些关于JAXB注释的帮助,但我找不到好的文档可以帮助我解决这个问题。我有一个要编码为XML的类。我的类(class)看起来像这样:@XmlRootElement(name="car")@XmlAccessorType(XmlAccessType.FIELD)@XmlType(propOrder={"vid","make","model","recalls","engSpec"})publicclassCar{@XmlElement(name="vid",required=true)privateStringvid;@XmlElement(name="make",required

java - 使用 namespace 和前缀的 JAXB 解码

我正在使用JAXB从SOAP响应中解析xml元素。我已经为xml元素定义了POJO类。我已经测试了没有命名空间的pojo类并为其添加前缀工作正常。虽然当我尝试使用命名空间和前缀进行解析时面临以下异常。要求是解析来自SOAPMessage对象的输入javax.xml.bind.UnmarshalException:unexpectedelement(uri:"http://schemas.xmlsoap.org/soap/envelope/",local:"Envelope").Expectedelementsare尝试通过为package-info.java中的包创建@XMLSchem

java - 使用 JAXB 创建不可变对象(immutable对象)

我正在使用JAXB从XSD文件创建Java对象。我正在创建不可变包装器来隐藏JAXB生成的对象(之前我正在更新JAXB对象以实现不可变接口(interface)并将接口(interface)返回给客户端。但意识到更改自动生成的类是不好的,因此使用包装器)目前我正在将这些不可变的包装器返回给客户端应用程序。是否有任何选项可以使自动生成的类不可变,并且可以避免创建不可变包装器的额外工作。鼓励任何其他方法。谢谢 最佳答案 从JSR-133(Java1.5依赖项)开始,您可以使用反射来设置未初始化的最终变量。因此您可以在私有(private

java - JAXB 的动态标签名称

我正在使用Jersey和JAXB构建一个简单的RESTful网络服务我有一个从“String”到“Integer”的HashMap:2010-04->242010-05->45我需要生成如下所示的XML响应:2445使用JAXB生成动态标记名称的最佳方法是什么? 最佳答案 您可以使用一个带有@XmlAnyElement注释的属性并将元素作为JAXBElement返回:privateMapmonths=...;@XmlAnyElementpublicList>getMonths(){List>elements=newArrayList

java - Jersey、JAXB、JAX-RS、Moxy、Jackson、EclipseLink Moxy、json 和 xml 之间有什么关系?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我有Node.js背景,对RESTfulWeb服务有很好的理解。现在我正在尝试使用Java构建RESTfulWeb服务。我了解核心Java,但对基于Java的Web开发完全陌生。我在学习了一些教程后得出结论,我需要使用Jersey框架来构建我的RESTfulAPI。我知道Jersey是JAX-RS的某种引用实现。但我无法理解遇到的各种其他术语和组件之间的关系,例如JAXB、Jackson、EclipseL

java - JAXB 是否总是忽略@XmlType/propOrder 中未指定的 'extra' 元素?

如果我有一个用注释的类@XmlType(name="someDTO",propOrder={"firstField","secondField",})但是XML(比如来自SOAP响应)看起来像abc我的对象仍将填充firstField和secondField,而忽略thirdField。这是为什么?会一直这样吗?如果存在额外的字段,是否有办法阻止创建对象? 最佳答案 一些JAXB(JSR-222)如果有属性映射到未包含在propOrder中的XML元素,实现将提示。@XmlType上的propOder不用于控制包含/排除哪些元素。排