JAXB命名空间解组Java 8u45和8u111之间的更改

时间:2016-11-22 00:56:14

标签: java xml jaxb

我已经查看了这两个版本之间的jaxb和java更改日志,并且空手而归。

在8u45这个代码工作正常,

package-info.java

@javax.xml.bind.annotation.XmlSchema(
    namespace = "http://www.example.org",
    elementFormDefault = XmlNsForm.QUALIFIED  
) package com.rezometry.fw.net.soap;

import javax.xml.bind.annotation.XmlNsForm;

Foo.java

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlAccessorType( XmlAccessType.FIELD)
@XmlRootElement(name = "foo")
public class Foo {
    @XmlElement( name = "bar", required = true )
    public String bar;
}

Test.java

import javax.xml.transform.stream.StreamSource;
import javax.xml.bind.JAXB;
import java.io.StringReader;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
@Test public void testJaxB(){
    Foo sample = JAXB.unmarshal( new StreamSource( new StringReader( "<foo><bar>bar1</bar></foo>" ) ), Foo.class );
    assertThat( sample.bar, is("bar1") );
}

然而在8u111中,sample.bar为null。我已经阅读了有关xml文档中缺少命名空间的各种其他答案,但我想确保继续我不修补可能在以后更改的错误。

我在intellij中看到这种情况,设置的唯一区别是我正在使用的java版本。所有其他库都是相同的。

0 个答案:

没有答案
相关问题