不带package-info.java的JAXB解组xml

不带package-info.java的JAXB解组xml,java,xml,jaxb,unmarshalling,package-info,Java,Xml,Jaxb,Unmarshalling,Package Info,如果没有package-info.java文件,JAXB解组器将抛出异常。此代码是从另一种语言调用的,自定义类加载器无法正确加载包信息 我已经手动将名称空间参数添加到所有@XmlElement注释中 Xml根元素具有多个xmlns属性。其中两个(xmlns和xmlns:c)具有相同的值(我无法更改来自外部服务的xml) 但是:如果我从文档中删除xmlns=“urn:foo:bar”,即使没有包信息,它也可以工作 问题是:如果没有包信息(我无法修改无法加载的自定义类加载器)和从xml中删除xmln

如果没有package-info.java文件,JAXB解组器将抛出异常。此代码是从另一种语言调用的,自定义类加载器无法正确加载包信息

我已经手动将名称空间参数添加到所有@XmlElement注释中

Xml根元素具有多个xmlns属性。其中两个(xmlns和xmlns:c)具有相同的值(我无法更改来自外部服务的xml)

但是:如果我从文档中删除xmlns=“urn:foo:bar”,即使没有包信息,它也可以工作

问题是:如果没有包信息(我无法修改无法加载的自定义类加载器)和从xml中删除xmlns,我如何解组? 我应该在代码中更改什么

Java 1.6_45 vJAXB 2.1.10

XML根元素示例:

<?xml-stylesheet type="text/xsl" href="file1.xslt">
<?xml-stylesheet type="text/xsl" href="file1.xslt"?>
<c:ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="urn:foo:ba" xmlns:c="urn:foo:bar" xmlns:std="urn:foo:std"
 xsi:schemaLocation="urn:foo:bar file2.xsd">
package-info.java

@javax.xml.bind.annotation.XmlSchema(namespace = "urn:foo:bar", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
    xmlns={@XmlNs(namespaceURI = "urn:foo:bar", prefix = "")})
package test.model;

    import javax.xml.bind.annotation.XmlNs;
例外情况:

javax.xml.bind.UnmarshalException: Unable to create an instance of my.package.here.model.ANY
任何想法都会得到极大的赞赏,我花了这么多时间尝试,但仍然一无所获

BUT: It works if I remove xmlns="urn:foo:bar" from document even without package-info
这意味着您没有在任何需要添加的地方添加
名称空间
参数

在下面的XML文档中,如果不使用
@XmlSchema
注释来映射名称空间限定,则需要
@XmlRootElement
注释上的
参数来映射
Foo
类和
bar
属性上的
@XmlElement
注释

<foo xmlns="http://www.example.com">
    <bar>Hello World</bar>
</foo>

你好,世界
<foo xmlns="http://www.example.com">
    <bar>Hello World</bar>
</foo>