Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jaxb XmlSee还有XmlRootElement名称吗?_Jaxb - Fatal编程技术网

Jaxb XmlSee还有XmlRootElement名称吗?

Jaxb XmlSee还有XmlRootElement名称吗?,jaxb,Jaxb,在参考JAXB实现中,是否仍然可以从XmlRootElement获取XMLSee并使用name=值 我想要的效果是type属性使用name=值,而不是XMLSeeAll中的实际类名 这可能是其他JAXB实现吗 小例子: @XmlRootElement(name="some_item") public class SomeItem{...} @XmlSeeAlso({SomeItem.class}) public class Resource {...} XML: <resource x

在参考JAXB实现中,是否仍然可以从XmlRootElement获取XMLSee并使用name=值

我想要的效果是type属性使用name=值,而不是XMLSeeAll中的实际类名

这可能是其他JAXB实现吗

小例子:

@XmlRootElement(name="some_item")
public class SomeItem{...}

@XmlSeeAlso({SomeItem.class})
public class Resource {...}

XML:
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="some_item">
...
</resource>
@XmlRootElement(name=“some_item”)
公共类SomeItem{…}
@XmlSeeAllow({SomeItem.class})
公共类资源{…}
XML:
...

不费吹灰之力就可以实现吗?

关于
@xmlse

@xmlseea
注释的目的只是让您的JAXB(JSR-222)实现知道,当它处理
资源
的元数据时,它还应该处理
SomeItem
类的元数据。有些人错误地认为它与映射继承有关,因为这是它最常用的用例。由于不能使用Java反射来确定类的子类,因此使用
@xmlseea
让JAXB实现知道也应该创建子类的映射


下面是您如何支持您的用例的示例:

资源

与Java类对应的复杂类型名通过
@XmlType
注释提供

用于UM12288631的包;
导入javax.xml.bind.annotation.XmlType;
@XmlType(name=“某些项目”)
公共类资源{
}
演示

根元素名称可以来自
@XmlRootElement
注释,也可以通过
JAXBElement
的实例提供。我们将创建
JAXBElement
的一个实例,并指出它正在保存
对象的一个实例。封送时,这将导致输出中包含
xsi:type
属性

用于UM12288631的包;
导入javax.xml.bind.*;
导入javax.xml.namespace.QName;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(Resource.class);
资源=新资源();
JAXBElement=newjaxbelement(QName.valueOf(“资源”)、Object.class、resource);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
marshaller.marshall(jaxbElement,System.out);
}
}
输出

生成的XML具有由
JAXBElement
提供的根元素,
xsi:type
属性的值来自
@XmlType
资源的注释