使用对象引用创建解析XML

时间:2015-01-14 22:17:54

标签: java android xml simple-framework

我正在解析xml文件并尝试从中创建模型。我正在使用Simple XML库。我的xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<root cycles_count="2">
  <shifts>
    <shift id="0" name="first"/>
    <shift id="1" name="second"/>
    <shift id="2" name="third"/>
    <shift id="3" name="fourth"/>
  </shifts>
  <cycles>
    <cycle name="A" start_date="1334620800000">
        <cycle_shift id="0" />
        <cycle_shift id="0" />
        <cycle_shift id="1" />
    </cycle>

    <cycle name="B" start_date="1334620800000">
        <cycle_shift id="1" />
        <cycle_shift id="1" />
        <cycle_shift id="2" />
    </cycle>
  </cycles>
</root>

有什么方法可以根据相同的cycle_shiftshiftid创建对象引用?我想实现类似的东西(简化版):

@Root
public class Shift {

  @Attribute
  int id;

  @Attribute
  String name;
}

@Root
public class Cycle {

  @ElementList
  List<Shift> shifts; // shifts connected by id's
}

也可以更改xml架构。提前谢谢。

2 个答案:

答案 0 :(得分:0)

  1. 循环移位并创建这些对象
  2. 创建一个字典,其中Shift为键,Shift为值
  3. 遍历所有周期并创建这些对象
  4. 创建属于该周期的班次列表时,只需引用Cycle的属性中的id,然后从您之前创建的字典中查找Shift并将其添加到列表中。
  5. 那会有用吗?

答案 1 :(得分:0)

您可以在Shift上设置名称属性optional,并摆脱cycle_shift并仅使用shift

<?xml version="1.0" encoding="utf-8"?>
<root cycles_count="2">
  <shifts>
    <shift id="0" name="first"/>
    <shift id="1" name="second"/>
    <shift id="2" name="third"/>
    <shift id="3" name="fourth"/>
 </shifts>

                                                   

<cycle name="B" start_date="1334620800000">
    <cycle_shift id="1" />
    <cycle_shift id="1" />
    <cycle_shift id="2" />
</cycle>

你的伪代码将是这样的:(我正在使用inline修饰符)

@Root
public class Cycle {

@ElementList(inline=true)
List<Shift> shifts; // shifts connected by id's
}