带有命名空间的 CXF getNode,解组

CXF getNode with namespace, unmarshaling

Apache-cxf,试图解组 xml,它有一些命名空间,因此 @XmlRootElement 包含名称和命名空间属性。

问题是:如何使这个测试起作用?

    @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 的原样。

通过在 @XmlElement 中为 version 添加 namespace 解决了该问题。

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

问题是,在以前的 cxf 版本中,它在没有指定 namespance.

的情况下工作

(我讨厌注释)

相关问题:here