急!!有关用C#.NET中写的WEBSERVER(返回XML)在DELPHI的调用 ( 积分: 200 )

蓝笛

Unregistered / Unconfirmed
GUEST, unregistred user!
这是在C#中写的WEBSERVER方法
[WebMethod]
public string GetEmployeeData()
{
this.sqlConnection1.Open();
this.sqlDataAdapter1.Fill(this.dataSet11,"tblDepartment")
return this.dataSet11.GetXml();
}
我用DELPHI调用后显示的XML是这种格式的:
<DataSet1 xmlns=&quot;http://www.tempuri.org/DataSet1.xsd&quot;>
<tblDepartment>
<DeptID>3</DeptID>
<DeptName>人事部 </DeptName>
<ManagerID>333333398</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>5</DeptID>
<DeptName>财务部 </DeptName>
<ManagerID>9</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>7</DeptID>
<DeptName>行政部 </DeptName>
<ManagerID>12</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>9</DeptID>
<DeptName>销售部 </DeptName>
<ManagerID>15</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>20</DeptID>
<DeptName>研发部 </DeptName>
<ManagerID>333333397</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>78</DeptID>
<DeptName>娱乐部 </DeptName>
<Description>尽情享乐</Description>
<ManagerID>9</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>84</DeptID>
<DeptName>信息部 </DeptName>
<Description />
<ManagerID>333333400</ManagerID>
</tblDepartment>
</DataSet1>
我想用TClientDataSet的XMLDATA属性直接赋值,可是发现TClientDataSet能识别的XML格式是这样的:
<?xml version=&quot;1.0&quot;
standalone=&quot;yes&quot;?>
<DATAPACKET Version=&quot;2.0&quot;>
<METADATA>
<FIELDS>
<FIELD attrname=&quot;DeptID&quot;
fieldtype=&quot;i4&quot;
readonly=&quot;true&quot;
SUBTYPE=&quot;Autoinc&quot;>
<PARAM Name=&quot;PROVFLAGS&quot;
Value=&quot;7&quot;
Type=&quot;i4&quot;
Roundtrip=&quot;True&quot;/>
</FIELD>
<FIELD attrname=&quot;DeptName&quot;
fieldtype=&quot;string.uni&quot;
WIDTH=&quot;20&quot;/>
<FIELD attrname=&quot;Description&quot;
fieldtype=&quot;string.uni&quot;
WIDTH=&quot;100&quot;/>
<FIELD attrname=&quot;ManagerID&quot;
fieldtype=&quot;i4&quot;/>
</FIELDS>
<PARAMS DEFAULT_ORDER=&quot;1&quot;
PRIMARY_KEY=&quot;1&quot;
UNIQUE_KEY=&quot;1&quot;/>
</METADATA>
<ROWDATA>
<ROW DeptID=&quot;3&quot;
DeptName=&quot;&amp;#20154;&amp;#20107;&amp;#37096;
&quot;
ManagerID=&quot;333333398&quot;/>
<ROW DeptID=&quot;5&quot;
DeptName=&quot;&amp;#36130;&amp;#21153;&amp;#37096;
&quot;
ManagerID=&quot;9&quot;/>
<ROW DeptID=&quot;7&quot;
DeptName=&quot;&amp;#34892;&amp;#25919;&amp;#37096;
&quot;
ManagerID=&quot;12&quot;/>
<ROW DeptID=&quot;9&quot;
DeptName=&quot;&amp;#38144;&amp;#21806;&amp;#37096;
&quot;
ManagerID=&quot;15&quot;/>
<ROW DeptID=&quot;20&quot;
DeptName=&quot;&amp;#30740;&amp;#21457;&amp;#37096;
&quot;
ManagerID=&quot;333333397&quot;/>
<ROW DeptID=&quot;78&quot;
DeptName=&quot;&amp;#23089;&amp;#20048;&amp;#37096;&quot;

Description=&quot;&amp;#23613;&amp;#24773;&amp;#20139;&amp;#20048;&quot;
ManagerID=&quot;9&quot;/>
<ROW DeptID=&quot;84&quot;
DeptName=&quot;&amp;#20449;&amp;#24687;&amp;#37096;
&quot;
ManagerID=&quot;333333400&quot;/>
</ROWDATA>
</DATAPACKET>
在DELPHI中用什么办法解决呢?怎样才能读取前面的那种格式的XML.我在网上是有找到解决办法.不过要用到DELPHI的工具XML MAPPER先将前面的那种格式转化生成一个.XTR文件.再转化.总觉得这种方法太麻烦了而且不实用.如果WEBSERVER返回的有10张表,那不是也要生成相应的10个.XTR文件.想想太可怕,如果返回的表是在运行期确定的呢?该怎么办??有没有更好的解决方法呢?请高手指教!!小弟在这里先谢过了.
 
这是在C#中写的WEBSERVER方法
[WebMethod]
public string GetEmployeeData()
{
this.sqlConnection1.Open();
this.sqlDataAdapter1.Fill(this.dataSet11,&quot;tblDepartment&quot;)
return this.dataSet11.GetXml();
}
我用DELPHI调用后显示的XML是这种格式的:
<DataSet1 xmlns=&quot;http://www.tempuri.org/DataSet1.xsd&quot;>
<tblDepartment>
<DeptID>3</DeptID>
<DeptName>人事部 </DeptName>
<ManagerID>333333398</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>5</DeptID>
<DeptName>财务部 </DeptName>
<ManagerID>9</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>7</DeptID>
<DeptName>行政部 </DeptName>
<ManagerID>12</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>9</DeptID>
<DeptName>销售部 </DeptName>
<ManagerID>15</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>20</DeptID>
<DeptName>研发部 </DeptName>
<ManagerID>333333397</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>78</DeptID>
<DeptName>娱乐部 </DeptName>
<Description>尽情享乐</Description>
<ManagerID>9</ManagerID>
</tblDepartment>
<tblDepartment>
<DeptID>84</DeptID>
<DeptName>信息部 </DeptName>
<Description />
<ManagerID>333333400</ManagerID>
</tblDepartment>
</DataSet1>
我想用TClientDataSet的XMLDATA属性直接赋值,可是发现TClientDataSet能识别的XML格式是这样的:
<?xml version=&quot;1.0&quot;
standalone=&quot;yes&quot;?>
<DATAPACKET Version=&quot;2.0&quot;>
<METADATA>
<FIELDS>
<FIELD attrname=&quot;DeptID&quot;
fieldtype=&quot;i4&quot;
readonly=&quot;true&quot;
SUBTYPE=&quot;Autoinc&quot;>
<PARAM Name=&quot;PROVFLAGS&quot;
Value=&quot;7&quot;
Type=&quot;i4&quot;
Roundtrip=&quot;True&quot;/>
</FIELD>
<FIELD attrname=&quot;DeptName&quot;
fieldtype=&quot;string.uni&quot;
WIDTH=&quot;20&quot;/>
<FIELD attrname=&quot;Description&quot;
fieldtype=&quot;string.uni&quot;
WIDTH=&quot;100&quot;/>
<FIELD attrname=&quot;ManagerID&quot;
fieldtype=&quot;i4&quot;/>
</FIELDS>
<PARAMS DEFAULT_ORDER=&quot;1&quot;
PRIMARY_KEY=&quot;1&quot;
UNIQUE_KEY=&quot;1&quot;/>
</METADATA>
<ROWDATA>
<ROW DeptID=&quot;3&quot;
DeptName=&quot;&amp;#20154;&amp;#20107;&amp;#37096;
&quot;
ManagerID=&quot;333333398&quot;/>
<ROW DeptID=&quot;5&quot;
DeptName=&quot;&amp;#36130;&amp;#21153;&amp;#37096;
&quot;
ManagerID=&quot;9&quot;/>
<ROW DeptID=&quot;7&quot;
DeptName=&quot;&amp;#34892;&amp;#25919;&amp;#37096;
&quot;
ManagerID=&quot;12&quot;/>
<ROW DeptID=&quot;9&quot;
DeptName=&quot;&amp;#38144;&amp;#21806;&amp;#37096;
&quot;
ManagerID=&quot;15&quot;/>
<ROW DeptID=&quot;20&quot;
DeptName=&quot;&amp;#30740;&amp;#21457;&amp;#37096;
&quot;
ManagerID=&quot;333333397&quot;/>
<ROW DeptID=&quot;78&quot;
DeptName=&quot;&amp;#23089;&amp;#20048;&amp;#37096;&quot;

Description=&quot;&amp;#23613;&amp;#24773;&amp;#20139;&amp;#20048;&quot;
ManagerID=&quot;9&quot;/>
<ROW DeptID=&quot;84&quot;
DeptName=&quot;&amp;#20449;&amp;#24687;&amp;#37096;
&quot;
ManagerID=&quot;333333400&quot;/>
</ROWDATA>
</DATAPACKET>
在DELPHI中用什么办法解决呢?怎样才能读取前面的那种格式的XML.我在网上是有找到解决办法.不过要用到DELPHI的工具XML MAPPER先将前面的那种格式转化生成一个.XTR文件.再转化.总觉得这种方法太麻烦了而且不实用.如果WEBSERVER返回的有10张表,那不是也要生成相应的10个.XTR文件.想想太可怕,如果返回的表是在运行期确定的呢?该怎么办??有没有更好的解决方法呢?请高手指教!!小弟在这里先谢过了.
 
关注这个问题,有谁知道这个问题的青举手!!!!
 
有一个人做了一套delphi访问 C#返回的记录集的控件 ,
http://www.2ccc.com/article.asp?articleid=2220 可以去看看,我前一段时间在大富翁上问到的。
 
顶部