首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略SuperClass

忽略SuperClass
EN

Stack Overflow用户
提问于 2012-12-06 00:31:09
回答 1查看 464关注 0票数 2

我使用的类扩展了JavaFx的组件

代码语言:javascript
复制
public class MyClass extends Pane {}

我只想序列化该类,而不是Pane超类。

由于Jaxb不支持它,所以我使用Eclipselink MOXy来实现这个目标:

封送器

代码语言:javascript
复制
Map<String, Source> metadataSource = new HashMap<String, Source>();
metadataSource.put("com.myapp", new StreamSource(getClass().getResourceAsStream("/com/myapp/myclass.xml")));

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, metadataSource);

JAXBContext context = JAXBContext.newInstance(new Class[] {MyClass.class}, properties);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(new MyClass(), new File("test.xml"));

myclass.xml

代码语言:javascript
复制
<?xml version="1.0"?>
<xml-bindings 
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    version="2.3">
    <java-types>
        <java-type name="javafx.scene.layout.Pane" xml-transient="true" />
    </java-types>
</xml-bindings>

但我发现了一个错误:

javax.xml.bind.JAXBException:异常描述:在包com.myapp上键控的绑定文件中不允许带有包javafx.scene.layout的java类型。-除了链接的例外:[ org.eclipse.persistence.exceptions.JAXBException EclipseLink-50037

我花了几个小时来寻找一些信息,但没有发现任何信息。

任何帮助都将不胜感激!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-06 00:54:30

您可以使用MOXy的外部映射文档来指定超级类型是java.lang.Object而不是Pane

代码语言:javascript
复制
<?xml version="1.0"?>
<xml-bindings 
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="com.example">
    <java-types>
        <java-type name="MyClass" super-type="java.lang.Object"/>
    </java-types>
</xml-bindings>

对相关问题的回答

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13735035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档