我使用的是Kotlin 1.3、Java 8和Spring 4.0+。
我只想把一个名称空间只附加到<HELLO>
,而不是它的子级。但是,当我使用@XmlRootElement为<HELLO>
定义命名空间时,即使我没有定义任何命名空间,<HI>
也会得到默认命名空间。
@XmlRootElement(name = "HELLO", namespace = "http://www.hello.net")
public class Hello {
@XmlElement(name = "HI")
protected Hi hi;
然后
<HELLO xmlns="http://www.hello.net">
<HI xmlns=""></HI>
</HELLO>
有没有办法从<HI>
中删除xmlns=""
(默认名称空间(?
仅供参考(在完成回答后(:
我正在使用Kotlin 1.3进行开发。我需要使用生成的Java类使用xjc(JAXB(从XML,因为程序(API(规范由XML处理来自将与API通信的外部客户端。
当使用不带-npa选项的xjc时,有一个包info.java用于在仅使用两个loc生成的所有类上应用相同的命名空间,然后我在项目中导出了这些类。(参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/xjc.html)
我认为当我在XmlMapper中(使用JacksonXmlModule(注册JaxbAnnotationModule((时,包info.java中的@XmlSchema(namespace="namespace1"(运行良好。但是,Jackson XmlMapper似乎并不完全支持xml注释。
您可以通过下面的答案或添加XmlMarshaller来解决这个问题,XmlMarshalller将xmlns添加到XML中。
jackson数据格式xml不支持包级别的命名空间:https://github.com/FasterXML/jackson-dataformat-xml/issues/18
如果希望它继承XML输出中的http://www.hello.net
,则需要为它提供该名称空间。