CXF getNode具有命名空间,解组

时间:2015-10-15 14:31:59

标签: java xml scala cxf

Apache-cxf,试图解组xml,它有一些名称空间,所以@XmlRootElement包含名称和名称空间attrs。

问题是:如何使这项测试工作?

    @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。

1 个答案:

答案 0 :(得分:0)

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

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

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

我讨厌注释

相关问题:here