带有命名空间的 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
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