Delphi中XML文件处理问题,如何将一数据集XML在Delphi中直接导入到ClientDataSet中?(50分)

  • 主题发起人 主题发起人 逍遥泿子
  • 开始时间 开始时间

逍遥泿子

Unregistered / Unconfirmed
GUEST, unregistred user!
如下面的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com) by rth77 (rus) -->
<Authors_Table>
<authors>
<au_id>172-32-1176</au_id>
<au_lname>White</au_lname>
<au_fname>Johnson</au_fname>
<phone>408 496-7223</phone>
<address>10932 Bigge Rd.</address>
<city>Menlo Park</city>
<state>CA</state>
<zip>94025</zip>
<contract>true</contract>
<abc>abc</abc>
<name>tzy</name>
</authors>
<authors>
<au_id>213-46-8915</au_id>
<au_lname>Green</au_lname>
<au_fname>Margie</au_fname>
<phone>415 986-7020</phone>
<address>309 63rd St. #411</address>
<city>Oakland</city>
<state>CA</state>
<zip>94618</zip>
<contract>true</contract>
</authors>
<authors>
<au_id>238-95-7766</au_id>
<au_lname>Carson</au_lname>
<au_fname>Cheryl</au_fname>
<phone>415 548-7723</phone>
<address>589 Darwin Ln.</address>
<city>Berkeley</city>
<state>CA</state>
<zip>94705</zip>
<contract>true</contract>
</authors>
<authors>
<au_id>267-41-2394</au_id>
<au_lname>Hunter</au_lname>
<au_fname>Anne</au_fname>
<phone>408 286-2428</phone>
<address>22 Cleveland Av. #14</address>
<city>San Jose</city>
<state>CA</state>
<zip>95128</zip>
<contract>true</contract>
<abc>add</abc>
</authors>
<authors>
<au_id>274-80-9391</au_id>
<au_lname>Straight</au_lname>
<au_fname>Dean</au_fname>
<phone>415 834-2919</phone>
<address>5420 College Av.</address>
<city>Oakland</city>
<state>CA</state>
<zip>94609</zip>
<contract>true</contract>
</authors>
</Authors_Table>
在vs.NET中可以用ReadXML直接导入的数据集中,并展示在Grid中,在Delphi中如何实现?
我看了下TXMLTransform, 但必须指定TransformationFile文件。
有没有如.NET中的直接读XML到数据集中的处理方法?
 
我记得adodataset好象有一个方法是loadfromfile可以导入xml文件,
我已成功做过你试一下。
qq:15196670 sj0714@21cn.com
 
呵呵  楼上说的好轻松. 要有 adodataset  特点的格式, 不是任何 xml 文件都能导入的
 
方法一:用TXMLDocument,可自己取得所有节点;
方法二:用TXMLDocument,可生成指定XML文件的对应PAS文件,里面一个字段对应一个
属性。用访问属性的方法访问XML,太容易了。
方法三:把XML文件用XML Maper转换为.xtr文件,然后在Delphi中用TXMLTransformProvider就可以把XML文件的数据送到ClientDataSet了。
 
Delphi中有例子
Borland/Delphi6/Demos/Internet/XMLTransformClient
 
我要利用HTTPRIO访问.net 写的webservice,然后将.net的结果集转换成clientdataset。取得在网上找了一天,大概有两种做法:
1、利用xmlmapper做一个映射关系文件xtr,用XMLTransformProvider1将得到的dataset转换成delphi的数据集(datapakege)格式,然后就可以直接作为数据源使用。
2、直接写分析程序读取xml中的数据。
可是!可是……1一种做法我怎么也转换不到数据!除非将.net产生的soap格式弄成最简单的xml格式,那xmlmapper才能取出数据……,另外我看到文章说要把xtr文件中的<SelectEach dest="DATAPACKET/ROWDATA/ROW" from="/soap:/Envelope/soap:Body/"改成<SelectEach dest="DATAPACKET/ROWDATA/ROW" from="/Envelope/soap:Body/,按照改了,还是没有结果!
至于第二中,感觉太不灵活了,不过如果有现成的控件可以使用也不失为一种好办法
 
XMLTransformProvider1控件:
写:*toxml.xtr,读:*todp.xtr
ClientDataSet1控件的providername的值设为XMLTransformProvider1。
这样,你对ClientDataSet1的操作就可以了。
 
换句话说如何直接把.net生成的数据xml文件,直接读取道clientdataset中?
 
后退
顶部