链接4个列表框

时间:2012-05-13 22:13:57

标签: c# xml parsing listbox hashmap

首先,我非常想要重新创建一个用Java创建的应用程序。

我有4个列表框。每个框都将保存xml文件中的值列表。

<Year>的listBox_year。 listBox_make为<Make><Model>的listBox_model。 listBox_subModel用于<sub-Model>

所以,让我说我将所有年份添加到listBox_year,没有重复年份。假设我点击一年它会显示那一年的所有汽车品牌。然后我点击Make,它将显示那个年份以下的那些模型......

使用Java我能够使用HashMap将这项工作转移到我可以拥有多个同名密钥的地方,我可以搜索在这种情况下选择了什么密钥年份获取所有具有该功能的Makes或Values作为关键的一年。

这是XML格式

<?xml version="1.0" encoding="utf-8" ?>
<vehicles>

  <Manufacturer>
    <Make>Subaru</Make>
    <Year>2010</Year>
    <Model>Impreza</Model>
    <Sub-Model>2.0i</Sub-Model>
    <Highway>36 MPG highway</Highway>
    <City>27 MPG city</City>
    <Price>$17,495</Price>
    <Description>
      Symmetrical All-Wheel Drive. 
      SUBARU BOXER® engine. 
      Seven airbags standard. 
      >Vehicle Dynamics Control (VDC). 
    </Description>
  </Manufacturer>

  <Manufacturer>
    <Make>Toyota</Make>
    <Year>2012</Year>
    <Model>Supra</Model>
    <Sub-Model>TT</Sub-Model>
    <Highway>22 MPG highway</Highway>
    <City>19 MPG city</City>
    <Price>$48,795</Price>
    <Description>
      16-inch aluminum-alloy wheels.
      6-speaker audio system w/iPod® control.
      Bluetooth® hands-free phone and audio.
      Available power moonroof.
    </Description>
  </Manufacturer>

  <Manufacturer>
    <Make>Subaru</Make>
    <Year>2011</Year>
    <Model>Impreza</Model>
    <Sub-Model>2.0i Limited</Sub-Model>
    <Highway>36 MPG highway</Highway>
    <City>27 MPG city</City>
    <Price>$18,795</Price>
    <Description>
      16-inch aluminum-alloy wheels. 
      6-speaker audio system w/iPod® control. 
      Bluetooth® hands-free phone and audio. 
      Available power moonroof.
    </Description>
  </Manufacturer>

  <Manufacturer>
    <Make>Subaru</Make>
    <Year>2011</Year>
    <Model>Impreza</Model>
    <Sub-Model>2.0i Limited</Sub-Model>
    <Highway>36 MPG highway</Highway>
    <City>27 MPG city</City>
    <Price>$18,795</Price>
    <Description>
      16-inch aluminum-alloy wheels.
      6-speaker audio system w/iPod® control.
      Bluetooth® hands-free phone and audio.
      Available power moonroof.
    </Description>
  </Manufacturer>

</vehicles>

1 个答案:

答案 0 :(得分:1)

与java hashmap最接近的类型是Dictionary。由于您需要具有相同键的多个项目,因此我将使用Dictionary<int,List<Item>>。 以下是您可能需要的一些基本功能:

void AddItem(int key, Item i, Dictionary<int,List<Item>> dict)
{
   if (!dict.ContainsKey(key))
   {
      dict.Add(i,new List<Item>());
   }
   dict[key].Add(i);
}

List<Item> GetList(int key)
{
   if (dict.ContainsKey(key))
   {
      return dict[key];
   }
   else
   {
      return new List<Item>(); // can also be null
   }
}