2015-10-15 46 views
0

Apache-cxf嘗試解組具有某些名稱空間的xml,因此@XmlRootElement包含名稱和名稱空間attrs。CXF getNode with namespace,unmarshaling

問題是:如何使這個測試工作?

@XmlRootElement(name = "MyClass", namespace = "http://foo_url") 
    class MyClass { 
      @XmlElement(name = "version") 
      var version: String = _ 
    } 
    class SimpleTest { 
      @Test 
      def test(): Unit = { 

     // given 
        val xmlString = 
          """<MyClass xmlns="http://foo_url"> <version>10</version></MyClass> """ 

        val xmlSource = new XMLSource(new ByteArrayInputStream(xmlString.getBytes("UTF-8"))) 

     // when 
        val node: MyClass = xmlSource.getNode(
          "MyClass", 
          Collections.singletonMap(
            "ns1", 
            "http://foo_url" 
          ), 
          classOf[MyClass]) 

        // then 
        assertThat(node, is(not(nullValue()))) //null 
        assertThat(node.version, is("10")) /// null ! 
      } 

我想這是關於命名空間的一切嗎? 基本上我想離開XmlRootElement,因爲它現在是。

回答

0

通過在@XmlElement中添加namespace來解決version的問題。

@XmlElement(name = "version", namespace = "http://foo_url") 
var version: String = _ 

的事情是,在以前的版本CXF的,它的工作,而不指定namespance

我恨註釋

相關的問題:here