如何将xml文件的内容显示到表单上的特定窗体控件并允许导航?

时间:2012-12-09 23:49:08

标签: c# xml windows-forms-designer

我有一个XML文件,它被加载到XMLDocument对象中。 XML文件有很多<旅游>节点。我想显示一个<的内容。旅游> Windows窗体上的节点,可以浏览<旅游>具有导航控件的节点。我怎样才能做到这一点?

我希望显示信息的表单看起来类似于:

form

以下是XML文件的示例:

<?xml version="1.0" ?>
<tours>
   <tour>
      <description>
      <![CDATA[
<p><i>Travel Scotland!</i> goes south to England blah blah...</p>
  ]]>
  </description>
  <tour_name>The Lake District</tour_name>
  <tour_photo>Lake.jpg</tour_photo>
  <tour_guide>Mary Taylor</tour_guide>
  <td_email>mailto:mtaylor@tscotland.com</td_email>
  <tour_start>6/15/2003</tour_start>
  <tour_end>6/19/2003</tour_end>
  <itinerary>
     <day>
        <day_number>1</day_number>
        <plan>London arrival</plan>
     </day>
     <day>
        <day_number>2</day_number>
        <plan>Train to Windemere</plan>
     </day>
     <day>
        <day_number>3</day_number>
        <plan>Second day in Windemere</plan>
     </day>
     <day>
        <day_number>4</day_number>
        <plan>Trip to Ambleside</plan>
     </day>
     <day>
        <day_number>5</day_number>
        <plan>Hiking tour to Grasmere</plan>
     </day>
  </itinerary>   
</tour>
<tour> ANOTHER TOUR ETC.

1 个答案:

答案 0 :(得分:0)

我不知道有关XMLDocument对象的细节,但是在伪代码术语中你需要这样做:

遍历您的<tour>节点,并将信息加载到自定义结构的数组中。 e.g。

    struct tour{
        String description;
        String tourname;
        String tourimagelink;
        ...
    }

然后,您需要遍历数组的每个元素,为每个条目创建Windows窗体控件(最好在停靠面板中等等,以便您可以滚动)。对于y轴偏移,您需要确定信息块的高度。如果使用for循环迭代元素,这样的公式可能会有所帮助:

    y = (i*blockHeight) + offsetOfControl;

我希望这在某些方面有所帮助。

编辑:更好 - 您可以使用一个暴露所有Windows窗体控件的类,而不是使用结构,以便您可以将它们附加到主窗体。