Java 当您有xml名称空间时,如何解组?

Java 当您有xml名称空间时,如何解组?,java,xml,jaxb,marshalling,xml-namespaces,Java,Xml,Jaxb,Marshalling,Xml Namespaces,我正在尝试使用名称空间来解组xml,以从中创建对象。我得到的异常是,该元素不是预期的。这是我得到的 @XmlRootElement(name="package") @XmlAccessorType(XmlAccessType.NONE) public class DenPackage { ..... } xml: <?xml version="1.0" encoding="ASCII"?> <pkg:package xmlns:pkg="http://www.leap.c

我正在尝试使用名称空间来解组xml,以从中创建对象。我得到的异常是,该元素不是预期的。这是我得到的

@XmlRootElement(name="package")
@XmlAccessorType(XmlAccessType.NONE)
public class DenPackage { 
.....

}
xml:

<?xml version="1.0" encoding="ASCII"?>
<pkg:package xmlns:pkg="http://www.leap.com/rest/package">
</pkg:package>
例外情况:

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.leap.com/rest/package", local:"package"). Expected elements are <{}package>

@XmlRootElementname=包应该是改变的东西吗?或者,如果你知道的比我多,我们非常感谢你的帮助。谢谢

只需添加名称空间属性:

@XmlRootElement(name="package", namespace = "http://www.leap.com/rest/package")

只需添加名称空间属性:

@XmlRootElement(name="package", namespace = "http://www.leap.com/rest/package")
您需要在类上定义pkg名称空间,如下所示:

@XmlRootElement(name="package" namespace = "http://www.leap.com/rest/package")
@XmlAccessorType(XmlAccessType.NONE)
public class DenPackage { 
.....

}
请记住,如果xml中的子元素未显示在示例中,并且它们也属于名称空间,那么请为它们定义名称空间,并且名称空间不会由绑定类上的字段继承。您需要在类上定义pkg名称空间,如下所示:

@XmlRootElement(name="package" namespace = "http://www.leap.com/rest/package")
@XmlAccessorType(XmlAccessType.NONE)
public class DenPackage { 
.....

}
请记住,如果xml中的子元素未显示在示例中,并且它们也属于名称空间,则为它们定义名称空间,并且名称空间不由绑定类上的字段继承 如果文档中的所有或大部分元素都将使用相同的命名空间进行限定,请使用@XmlSchema注释指定命名空间限定@XmlSchema是一个包级别的注释,因此它位于一个名为package info的特殊类上,类似于。指定名称空间和elementFormDefault=XmlNsForm.QUALIFIED的组合意味着此名称空间将应用于所有未重写名称空间的元素

package-info.java

用例2-只有根元素是命名空间限定的 如果只有根元素是命名空间限定的,则使用@XmlRootElement注释

@XmlRootElement(name="package", namespace = "http://www.leap.com/rest/package")
@XmlAccessorType(XmlAccessType.NONE)
public class DenPackage { 
.....

}
更多信息 用例1-所有元素都是命名空间限定的 如果文档中的所有或大部分元素都将使用相同的命名空间进行限定,请使用@XmlSchema注释指定命名空间限定@XmlSchema是一个包级别的注释,因此它位于一个名为package info的特殊类上,类似于。指定名称空间和elementFormDefault=XmlNsForm.QUALIFIED的组合意味着此名称空间将应用于所有未重写名称空间的元素

package-info.java

用例2-只有根元素是命名空间限定的 如果只有根元素是命名空间限定的,则使用@XmlRootElement注释

@XmlRootElement(name="package", namespace = "http://www.leap.com/rest/package")
@XmlAccessorType(XmlAccessType.NONE)
public class DenPackage { 
.....

}
更多信息
哇,这真是太棒了。非常感谢!哇,这真是太棒了。非常感谢!