首先有三张表
Table1 ----QuestQuestID
Name
DescriptorTable2----ConditionConditionID
QuestID 
Type
DescriptorTable3----RewardRewardID
QuestID 
ItemId
Descriptor
现在想把三张表 根据QuestID 导出XML 需要XML格式
<root>
<item QuestID="" Name="" Descriptor = "" >
  <Condition ConditionID=""  QuestID ="" Type="" Descriptor/>
  <Reward>
     <item QuestID=""ItemId="" Descriptor=""/>
     <item QuestID=""ItemId="" Descriptor=""/>
  </Reward>
</item>
<item QuestID="" Name="" Descriptor = "" >
  <Condition ConditionID=""  QuestID ="" Type="" Descriptor/>
  <Reward>
     <item QuestID=""ItemId="" Descriptor=""/>
     <item QuestID=""ItemId="" Descriptor=""/>
  </Reward>
</item>
</root>麻烦各位高手,给出思路,和关键代码。。谢谢了 

解决方案 »

  1.   

    dataset 有 直接写xml的。
      

  2.   

    dataset.Tables["TableName"].WriteXml("c:\\test.xml", XmlWriteMode.WriteSchema)
      

  3.   


    是三张表导出一个XML文件。。
      

  4.   

    _dataset.WriteXml("c:\\test.xml", XmlWriteMode.WriteSchema);
      

  5.   

    XmlWriteMode有几种模式,你自己看那种好.
      

  6.   


    好像是我还没表达清楚。 我现在有三张表、 都有QuestID字段 然后需要导成一个XML文件。 格式就是上面那个样子的
      

  7.   

    你先用DataSet.WriteXml 试下看看生成的是怎样的
      

  8.   

    <root>
    <item QuestID="" Name="" Descriptor = "" />
    <item QuestID="" Name="" Descriptor = "" />
    <item QuestID="" Name="" Descriptor = "" />
    </root>
    这样的另外两张表妹办法关联啊
      

  9.   

    DataSet 中几张表?  三张表都在DataSet中么?
      

  10.   


    呃,现在我用XmlTextWriter.WriteStartDocument() 搭出格式了.. 数据与字段名要怎么循环添加进去呢?(是三张表)
      

  11.   

    自己拼的话,较繁琐。用DataSet 输出的话,会少写很多代码。如果你坚持自己输出的话,用 两层循环首先 遍历全部的 Quest在遍历的同时 根据QuestID 查找 Condition 中对应的记录,貌似是1对1 之后才查找 Reward 中的记录,这个时候是 1对多  需要再次循环 Reward 中的对应记录
      

  12.   

    感谢大侠,我再问下,如果要用DataSet做的话,要怎么做呢?
      

  13.   

    你将三张表存入 DataSet 中,然后DataSet.WriteXml如果效果不是预期,可能要设置一下 三个表它们的对应关系。这个时候导出的 XML 应该 离你需要的格式差不多了在简单调整一下就可以了。
      

  14.   

    用DataSet 却是很简单、
    现在导出是分开的,三个表的对应关系要怎么设置呢?
      

  15.   

    http://blog.sina.com.cn/s/blog_55a69f170100l16k.html
      

  16.   

    设定关系也没好用么?要不你先使用遍历的方式自己填充一下XML
      

  17.   

    DtatRelation IARE = new DtatRelation("QRRE",ds.Tables["Quset"].Columns["QuestID"],ds.Tables["Reward"].Columns["QuestID"]);
    ds.Relation.Add(IARE);
    DtatRelation ICRE = new DtatRelation("QRRE1",ds.Tables["Quset"].Columns["QuestID"],ds.Tables["Condition"].Columns["QuestID"]);
    ds.Relation.Add(ICRE);ds.WriteXml("TestXml.xml");导出后
    <root>
    <Quest  QuestID="1"/>
    <Quest  QuestID="2"/>
    <Quest  QuestID="3"/>
    <Reward id = "0" QuestID="1"/>
    <Reward id = "1" QuestID="1"/>
    <Reward id = "2" QuestID="1"/>
    <Reward id = "3" QuestID="1"/>
    <Condition id = "0" QuestID="1">
    <Condition id = "1" QuestID="2">
    <Condition id = "2" QuestID="3">
    <Condition id = "3" QuestID="4">
    </root>是这样的格式、、
      

  18.   

    那看来DataSet.WriteXml 不适用。只能自己写