我想用C#做一个客户端,调用Web Service上的一个方法,Web Service端是用Delphi写的,这个方法返回的是Delphi里TClientDataSet的结果集;客户端的调用等一切都是正常的就是在用C#里的DataSet读取DELPHI里TClientDataSet的XMLData的XML串的时候不对,也不报错,但读出的数据不对;
ds.ReadXml(new System.IO.StringReader(vDataStr));这是我读取Delphi程序里TClientDataSet.XMLData属性的值的语句;TClientDataSet.XMLData生成的语句大概如下:
<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="SJJMC" fieldtype="string" required="true" WIDTH="30"/><FIELD attrname="SJK_ID" fieldtype="r8" required="true"/><FIELD attrname="SJJBT" fieldtype="string" WIDTH="80"/><FIELD attrname="LX" fieldtype="string" WIDTH="10"/><FIELD attrname="SJJLX" fieldtype="string" SUBTYPE="FixedChar" WIDTH="10"/><FIELD attrname="JZJB" fieldtype="r8"/><FIELD attrname="GLTJ" fieldtype="string" WIDTH="500"/><FIELD attrname="FL" fieldtype="string" WIDTH="200"/><FIELD attrname="XGSJ" fieldtype="string" WIDTH="200"/><FIELD attrname="LB" fieldtype="string" WIDTH="255"/><FIELD attrname="FLXH" fieldtype="r8"/><FIELD attrname="JB" fieldtype="string" WIDTH="20"/><FIELD attrname="SM" fieldtype="string" WIDTH="200"/><FIELD attrname="SJJCQ_ID" fieldtype="r8"/><FIELD attrname="SJSJJMC" fieldtype="string" WIDTH="20"/></FIELDS><PARAMS/></METADATA><ROWDATA><ROW SJJMC="AJLJ33" SJK_ID="13" SJJBT="综合录井钻头数据表" LX="静态录井" SJJLX="表" JZJB="2" FL="录井" LB="生产成果"/><ROW SJJMC="AJLJ34" SJK_ID="13" SJJBT="钻头程序数据表" LX="静态录井" SJJLX="表" JZJB="2" FL="录井" LB="生产成果"/>我没有贴全,但这里包括一条记录以及所有字段描述的信息;名位高手我应该怎么办啊;
十万火急,在线等待;

解决方案 »

  1.   

    我看了一下我的DATASET读出的六个表,就是Tables[I].TableName;
    1:DATAPACKET
    2:METADATA
    3:FIELDS
    4:FIELD
    5:ROWDATA
    6:ROW
    好怪噢,这个怎么读的是每个标记名称;郁闷;
      

  2.   

    毕竟是不同语言版本的DataSet,因此彼此之间形成的xml格式也不同。
      

  3.   

    你可以用xmldocument去逐个分析。
    用DataSet.ReadXml是不行的。
      

  4.   

    to 晕啊,这样程序速度不是更慢了;5555555555555555555;这是没有办法的,因为你不可能让系统帮你把一个TClientDataSet生成的数据转换成DataSet数据。
      

  5.   

    TO: Knight94(愚翁) 
    你的意思是,把数据分析出来,再一条一条的插到DataSet里嘛;
    晕啊,以前对XML了解过一点点,没有深触过;
    你做过没有,有没有现成代码:),哈哈
      

  6.   

    其实你这个问题的难点在于如何分析TClientDataSet生成的xml文件,即要分析生成xml的结构什么,有什么特性。这样你在C#端才能分析出来,如果按照xml一个节点一个节点去分析就更累了。
      

  7.   

    是啊,要是知道DELPHI的控件TClientDataSet生成XML时的Schema就好办了;