none
读取xml文件问题,谢谢! RRS feed

  • 问题

  •  
     
     
    - <DC m_strName="2" m_nCode="0x0000">
      <m_nType>0C</m_nType>
      <CQMETANUM>2</CQMETANUM>
      <DWMETANUM>2</DWMETANUM>
      <FWMETANUM>2</FWMETANUM>
      <META>240,500,250,500</META>
      <META>250,500,260,500</META>
      <META>280,500,270,500</META>
      <META>270,500,260,500</META>
      <META>280,460,270,480</META>
      <META>270,480,260,500</META>
      <m_tectRect>256,504,263,519</m_tectRect>
      </DC>
    - <DC m_strName="8" m_nCode="0x0001">
      <m_nType>0C</m_nType>
      <CQMETANUM>2</CQMETANUM>
      <DWMETANUM>2</DWMETANUM>
      <FWMETANUM>2</FWMETANUM>
      <META>320,500,310,500</META>
      <META>310,500,300,500</META>
      <META>280,500,290,500</META>
      <META>290,500,300,500</META>
      <META>280,460,290,480</META>
      <META>290,480,300,500</META>
      <m_tectRect>296,504,303,519</m_tectRect>
     
    像以上xml文件中,用dataset的readxml()方法读取之后,整个有DC标记的会生成一个表,其中META会单独生成一个表,且用vs查看,和生成的DC表有对应关系,现在要写入数据库,用什么方法(非遍历xml文件),能使相应的DC行找到对应的META行呢???不是每个DC都有6个META,是可变化的。有没有相应的属性活方法,可以表示出相应DC和META的对应关心,用vs工具查看过,应该是有内部联系,但不知道怎么用代码找出来,谢谢!!
    2008年12月8日 14:18

答案

  •  

    DC_META不是一个 datacolumn 而是一个 relation

    get childrows  和getparentrow  是根据一个关系relation作线索  找到符合条件的行

    他们不需要添加到dc里面 

    你读取了整个xml 就对应了整个dataset 

    无论是DC表还是META表 都是这个dataset的成员

    也就是说 无论是 DC这个结构  或者是 META这个结构 都是dataset的成员

     

    我们没有办法让树形结构完整的存在于dataset的关系数据库中 但是我们可以用关系来表示父子关系

    所以  getchildrows (relation)就已经很清楚明白的表明父子关系了 不必拘泥物理上的层次结构

    2008年12月11日 5:09

全部回复

  • 貌似很多人看 但无人回答

    2008年12月9日 3:33
  • 你可以枚举 dataset的Relations集合 如果我估计没有错    读取了这个xml后会自动生成 一对多关系: DC_META

     

    这样 如果有一个DC的row   dr

    dr=dataset.tables("DC").select()(0)

    那么

    dr.GetChildRows ("DC_META")  这个array 就是你需要的6个META

     

    如果一个META的row  mr

    mr=dataset.tables("META").select()(0)

    那么

    mr.GetParentRows("DC_META")   就可以得到所有的符合条件的DC行array

    如果确认是1对多的关系   也可以用 dr.GetParentRow("DC_META")

     

    2008年12月9日 4:45
  • 的确是生成了一个DC_META的表

    通过dr.GetChildRows("DC_META")读出来之后,只能存到datarow[]的数组里,且每个元素都是datarow类型

    怎样把这6个相应的DC_META添加到相应的DC行中???

    通过新建datarow或datacolumn都报错,类型不匹配

    谢谢!

     

     

    2008年12月9日 13:06
  • 就是说取出的子集DC_META每个元素都是一个datarow

    怎样和原来的父datarow合并成一个datarow

    通过在父datarow添加datacolumn

    无法将DC_META赋进去啊

     

    2008年12月10日 2:00
  •  

    DC_META不是一个 datacolumn 而是一个 relation

    get childrows  和getparentrow  是根据一个关系relation作线索  找到符合条件的行

    他们不需要添加到dc里面 

    你读取了整个xml 就对应了整个dataset 

    无论是DC表还是META表 都是这个dataset的成员

    也就是说 无论是 DC这个结构  或者是 META这个结构 都是dataset的成员

     

    我们没有办法让树形结构完整的存在于dataset的关系数据库中 但是我们可以用关系来表示父子关系

    所以  getchildrows (relation)就已经很清楚明白的表明父子关系了 不必拘泥物理上的层次结构

    2008年12月11日 5:09