【发布时间】:2015-03-09 11:17:28
【问题描述】:
我有一个容易理解但很难解决的问题(对我来说)。
我有一个这样的 XML 文件:
<class name='package.AnnotatedClass2'>
<attribute name='field1'>
<attributes>
<attribute name='targetField1name' />
<attribute name='targetField2name' />
</attributes>
</attribute>
</class>
我有另一个包含“属性”标签(但在 XML 文件中不存在)的 bean,全局节点:
<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;
}
为<global> 标签留下的XmlGlobal
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 类相同只是为了便于阅读,实际上它们是不同的。
我该如何解释要使用的那个类?
【问题讨论】:
-
请显示 Aelement 和 Belement 的实际 Java 代码(或至少是一些有效的 Java 代码并演示问题)。您当前的
public Anode;不是有效的 Java 字段声明,但如果您有public Anode node;(并删除了节点类上的别名注释),那么它应该可以按您的要求工作。 -
我已经测试了您的示例(更正了编译错误),它可以按您的预期工作。能详细点吗?
-
我已经更新了帖子,感谢您的帮助