【问题标题】:Xstream absolute reference in collections集合中的 Xstream 绝对引用
【发布时间】:2014-10-03 21:11:15
【问题描述】:

当列表中的某个子项引用此列表中的其他子项时,我如何使用 XStream 从 XML 获取对象。 尝试:

<projectEstimate id="586">
    <projectEstimateKosgus class="list">

      <projectEstimateKosgu>
        <amount>1.00</amount>
        <parent class="projectEstimateKosgu" reference="/projectEstimate/projectEstimateKosgus/projectEstimateKosgu[2]"/>
        <estimate class="projectEstimate" reference="/projectEstimate"/>
      </projectEstimateKosgu>

      <projectEstimateKosgu>
        <amount>2.00</amount>
        <estimate class="projectEstimate" reference="/projectEstimate"/>
      </projectEstimateKosgu>

    </projectEstimateKosgus>
</projectEstimate>

projectEstimate 对象具有集合字段“projectEstimateKosgus”,并且该集合的子对象具有字段“parent”,该字段引用了该集合中的“projectEstimateKosgu”对象。当我尝试在标签中设置父级时,它位于引用标签的上方,我得到:

com.thoughtworks.xstream.converters.ConversionException: Invalid reference

但这有效,如果改变“projectEstimateKosgu”标签的顺序,像这样

<projectEstimate id="586">
    <projectEstimateKosgus class="list">

      <projectEstimateKosgu>
        <amount>2.00</amount>
        <estimate class="projectEstimate" reference="/projectEstimate"/>
      </projectEstimateKosgu>

      <projectEstimateKosgu>
        <amount>1.00</amount>
        <parent class="projectEstimateKosgu" reference="/projectEstimate/projectEstimateKosgus/projectEstimateKosgu"/>
        <estimate class="projectEstimate" reference="/projectEstimate"/>
      </projectEstimateKosgu>

    </projectEstimateKosgus>
</projectEstimate>

【问题讨论】:

  • 欢迎来到 SO,我认为这个 Object References 链接可能会对您有所帮助。

标签: java xstream pojo


【解决方案1】:

您可以将relative absolute mode 用于XStream 对象,方法是将其模式设置为:

  xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);

或者您可以将ID mode 用于XStream 对象,方法是将其模式设置为:

  xstream.setMode(XStream.ID_REFERENCES);

Reference

【讨论】:

  • XPATH_ABSOLUTE_REFERENCES 已被使用。当 projectEstimateKosgu 是临时实例(未创建)时,如何使用 ID_REFERENCES? ID 在保存时由休眠生成,在从 XML 转换过程中是未知的
猜你喜欢
  • 2011-03-09
  • 2010-12-16
  • 1970-01-01
  • 2012-07-05
  • 2013-04-22
  • 1970-01-01
  • 2013-11-01
  • 2010-12-19
  • 1970-01-01
相关资源
最近更新 更多