向java类根元素添加命名空间时出现问题

向java类根元素添加命名空间时出现问题,java,jaxb,Java,Jaxb,我正在使用jaxb将java对象转换为xml。然而,在将名称空间属性添加到根元素位置时,我面临一个问题 Java类是: @XmlRootElement(name="Position") @XmlAccessorType(XmlAccessType.FIELD) public class Position{ @XmlElement(name="Info")

我正在使用jaxb将java对象转换为xml。然而,在将名称空间属性添加到根元素位置时,我面临一个问题

Java类是:

        @XmlRootElement(name="Position")
        @XmlAccessorType(XmlAccessType.FIELD)
        public class Position{
    
             @XmlElement(name="Info")
             private String info;
    
    }
jaxb代码是:

            JAXBContext jaxbContext = JAXBContext.newInstance(Position.class);
            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            StringWriter wr = new StringWriter();
            jaxbMarshaller.marshal(obj, wr);
            String output = wr.toString();
生成的输出的形式如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Position>
    
    <Info>
    ....

....
但是,我需要输出为

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Position xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://cmds.wlb3.nam.nsroot.net/xmlschema/ArkRioPositionSchema/v1">
  
  <Info>
   ...

...

如何将这些xml名称空间属性添加到根元素中。请提供帮助,非常感谢。

您通过在注释上实际指定名称空间来添加名称空间:

@XmlRootElement(name=“Position”,命名空间=”http://cmds.wlb3.nam.nsroot.net/xmlschema/ArkRioPositionSchema/v1")
@XmlAccessorType(XmlAccessType.FIELD)
阶级地位{
@XmlElement(name=“Info”,命名空间=”http://cmds.wlb3.nam.nsroot.net/xmlschema/ArkRioPositionSchema/v1")
私有字符串信息;
}
输出


测试。。。
如果需要,将添加
xsi
xsd
名称空间,本例不需要它们


请注意,不必在所有注释上指定名称空间,还可以通过在
package info.java
文件中添加注释来指定整个java包的名称空间。一点研究会很快教你怎么做。

谢谢你的回复,但是当我尝试添加它时,我得到的输出是
我如何在多个时间内摆脱这个ns2places@Aadil你为什么在乎?命名空间前缀是XML文档的本地前缀,任何读取文档的代码都不应该关心前缀是什么。如果它们真的在意,那么它们就坏了,应该被修复。只有名称空间URL才重要,前缀只是一个本地别名,因此您不必重复整个长URL。--无论如何,您可以控制正在使用的前缀。由于我不明白为什么我应该为您做研究,我建议您进行web搜索并阅读您找到的一些文章。当然,Andreas,我从早上开始就在研究此修复程序,实际上我正在将此xml负载发布到一个外部系统,不幸的是,该系统抱怨缺少xmlns标记,并且正在失败。因为我没有控制权来更正代码。所以我只需要修好我的。无论如何谢谢你的帮助。。appreciated@Aadil“抱怨缺少
xmlns
标记”我不知道确切的错误,但我打赌这不是抱怨前缀,而是抱怨XML根本没有名称空间。