gpt4 book ai didi

java - XSTREAM - 类转换异常

转载 作者:行者123 更新时间:2023-12-01 11:48:53 27 4
gpt4 key购买 nike

我有一个很容易理解但很难解决的问题(对我来说)。

我有一个像这样的 XML 文件:

    <class name='package.AnnotatedClass2'>
<attribute name='field1'>
<attributes>
<attribute name='targetField1name' />
<attribute name='targetField2name' />
</attributes>
</attribute>
</class>

我有另一个包含“属性”标记的 bean(但不存在于 XML 文件中),全局节点:

<class name="package.Example">
<global>
<excluded>
<attribute name ="field3"/>
</excluded>
</global>
</class>

保留 <class> 的 XmlClass标签

public class XmlClass {

/** global configuration */
public XmlGlobal global;
/** list of attributes node */
@XStreamImplicit(itemFieldName="attribute")
public List<XmlAttribute> attributes;
}

XmlGlobal 保留 <global>标签

public class XmlGlobal {
public List<XmlTargetExcludedAttribute> excluded;
}

@XStreamAlias("attribute")
public class XmlTargetExcludedAttribute {
/** name attribute of class node */
@XStreamAsAttribute
public String name;
}

和 XmlAttribute:

public class XmlAttribute {

/** list of target attributes */
public List<XmlTargetAttribute> attributes;
}

@XStreamAlias("attribute")
public class XmlTargetAttribute {

/** name attribute of attribute node */
@XStreamAsAttribute
public String name;
}

在 xmlAttribute.attributes 中执行 toXml() 方法后,我有两个 XmlTargetExcludedAttribute 实例,而不是 XmlTargetAttribute。

准确地说:XmlTargetExcludedAttribute 和 XmlTargetAttribute 类相同只是为了便于阅读,实际上它们是不同的。

我该如何解释要使用的类?

最佳答案

您可以注册一个本地NamedCollectionConverter,而不是全局地为两个不同的类添加别名。在每个列表值属性上:

public class XmlGlobal {
@XStreamConverter(value=NamedCollectionConverter.class, useImplicitType=false,
strings={"attribute"}, types={XmlTargetExcludedAttribute.class})
public List<XmlTargetExcludedAttribute> excluded;
}

public class XmlTargetExcludedAttribute {
/** name attribute of class node */
@XStreamAsAttribute
public String name;
}


public class XmlAttribute {

/** list of target attributes */
@XStreamConverter(value=NamedCollectionConverter.class, useImplicitType=false,
strings={"attribute"}, types={XmlTargetAttribute.class})
public List<XmlTargetAttribute> attributes;
}

public class XmlTargetAttribute {

/** name attribute of attribute node */
@XStreamAsAttribute
public String name;
}

关于java - XSTREAM - 类转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940683/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com