function DataSetToXml(ADataSet: TDataSet;Indent: Integer): string;
var 
i: Integer; 
Indent1, Indent2: string; 
temp: string; 
begin 
Indent1 := Format('%*s', [Indent * 2, ' ']);
Indent2 := Indent1 + ' ';
Result := EmptyStr;
ADataSet.First; 
while not ADataSet.Eof do 
begin 
Result := Result + Format('%s<%s>'#13#10, [Indent1, 'Project']);
for i := 0 to ADataSet.FieldCount - 1 do
if ADataSet.Fields[i].DataType in [ftString..ftAutoInc, ftMemo,
ftWideString] then
begin
temp := ReplaceString(ADataSet.Fields[i].AsString);
Result := Result + Format('%2:s<%0:s>%1:s</%0:s>'#13#10,
[ADataSet.Fields[i].FieldName, temp, Indent2])
end;
Result := Result + Format('%s</%s>'#13#10, [Indent1, 'Project']); 
ADataSet.Next; 
end; 
end;
能帮我解释一下这里的各个format的大概意思么,谢谢了,我不懂!

解决方案 »

  1.   

    Format格式化函数:
    Format('%sBC',['A'])=ABC  //%s表示字符串
    Format('%dBC',[1])=1BC    //%d表示整型 
    %f表示浮点型,%x表示转成十六进制等上面:
    Indent1 := Format('%*s', [Indent * 2, ' ']); 
    就是在空格' '前添加相应的空格直到长度为Indent * 2,可以这样试:
    Format(%*s,[5,'A'])=    A;//在A前面自动补四个空格直到加上A长度为5
    这样用法和Format(%5s,['A'])一样,只是用*代替数字5;还有:
    Result := Result + Format('%2:s <%0:s>%1:s </%0:s>'#13#10, 
    这种格式:Fomrat('%0:s','abc')里的0:表示序号,比如:
    Format('%0:s%1:s%0:s%1:s',['A','B'])=ABAB
    还有很多用法,自己找资料
      

  2.   

    那个dataset中采集了5个表中的数据,有的字段是相同的(为了取得相关联),用了上述方法之后,相同的字段后面会加_1或_2之类的,怎么回事呢!
    <?xml version="1.0" encoding="gb2312"?>  <Project>
       <CorpNo>666                 </CorpNo>
       <CorpName>35</CorpName>
       <RegisteredArea>345</RegisteredArea>
       <CertifyGrade>345</CertifyGrade>
       <CorporateName>34</CorporateName>
       <CorporatePhone>345</CorporatePhone>
       <ProjectNo>777</ProjectNo>
       <CorpNo_1>666                 </CorpNo_1>
       <ProjectName>32</ProjectName>
       <ProjectArea>34</ProjectArea>
       <GetMode>3  </GetMode>
       <LandGertify>34</LandGertify>
       <GetTime>3009-03-03</GetTime>
       <LandPrice>345</LandPrice>
       <FloorArea>345</FloorArea>
       <InverstNum>345</InverstNum>
       <OwnFund>34</OwnFund>
       <Finance>345</Finance>
       <ProjectPurpose>345     </ProjectPurpose>
       <ProjectStart>3008-03-09</ProjectStart>
       <ProjectFinish>3007-09-04</ProjectFinish>
       <ProjectManager>43</ProjectManager>
       <RegionType>34 </RegionType>
       <RegionName>34                  </RegionName>
       <Address>34</Address>
       <PreGrantNo>345</PreGrantNo>
       <ProjectNo_1>777</ProjectNo_1>
       <CorpNo_2>666                 </CorpNo_2>
       <GrantArea>345</GrantArea>
       <GrantHouseArea>35</GrantHouseArea>
       <GrantSetNum>34</GrantSetNum>
       <GrantHSetNum>345</GrantHSetNum>
       <GrantTime>2999-02-02</GrantTime>
       <OpenTime>3003-03-03</OpenTime>
       <AveragePrice>345</AveragePrice>
       <Status>34</Status>
       <HouseID>345</HouseID>
       <ProjectNo_2>777</ProjectNo_2>
       <PreGrantNo_1>345</PreGrantNo_1>
       <BuildCode>32</BuildCode>
       <CellCode>324</CellCode>
       <HouseCode>2345</HouseCode>
       <Structure>323</Structure>
       <Style>576</Style>
       <FloorArea_1>567</FloorArea_1>
       <InsideArea>34</InsideArea>
       <Price>3</Price>
       <HousePurpose>768     </HousePurpose>
       <HouseProperty>867</HouseProperty>
       <HouseID_1>435</HouseID_1>
       <ProjectNo_3>777</ProjectNo_3>
       <ContractNo>345</ContractNo>
       <Status_1>35 </Status_1>
       <BargainNum>345</BargainNum>
       <BargainTime>2009-03-03</BargainTime>
       <ChangeTime>3009-03-03</ChangeTime>
       <PayWay>34</PayWay>
       <FPMoney>345</FPMoney>
       <LoanMoney>325</LoanMoney>
       <FundMoney>35</FundMoney>
       <MoneyType>325</MoneyType>
       <LoginTime>20091202</LoginTime>
      </Project>
      <Project>
       <CorpNo>111                 </CorpNo>
       <CorpName>222</CorpName>
       <RegisteredArea>333</RegisteredArea>
       <CertifyGrade>444</CertifyGrade>
       <CorporateName>555</CorporateName>
       <CorporatePhone>666</CorporatePhone>
       <ProjectNo>999</ProjectNo>
       <CorpNo_1>111                 </CorpNo_1>
       <ProjectName>sdf</ProjectName>
       <ProjectArea>23</ProjectArea>
       <GetMode>23 </GetMode>
       <LandGertify>fs</LandGertify>
       <GetTime>2001-01-01</GetTime>
       <LandPrice>2</LandPrice>
       <FloorArea>234</FloorArea>
       <InverstNum>234</InverstNum>
       <OwnFund>23</OwnFund>
       <Finance>234</Finance>
       <ProjectPurpose>234     </ProjectPurpose>
       <ProjectStart>2009-02-02</ProjectStart>
       <ProjectFinish>2008-02-02</ProjectFinish>
       <ProjectManager>32</ProjectManager>
       <RegionType>23 </RegionType>
       <RegionName>23                  </RegionName>
       <Address>24</Address>
       <PreGrantNo>234</PreGrantNo>
       <ProjectNo_1>999</ProjectNo_1>
       <CorpNo_2>111                 </CorpNo_2>
       <GrantArea>234</GrantArea>
       <GrantHouseArea>234</GrantHouseArea>
       <GrantSetNum>234</GrantSetNum>
       <GrantHSetNum>234</GrantHSetNum>
       <GrantTime>2003-03-03</GrantTime>
       <OpenTime>2003-02-02</OpenTime>
       <AveragePrice>23</AveragePrice>
       <Status>23</Status>
       <HouseID>1</HouseID>
       <ProjectNo_2>999</ProjectNo_2>
       <PreGrantNo_1>21</PreGrantNo_1>
       <BuildCode>21</BuildCode>
       <CellCode>21</CellCode>
       <HouseCode>21</HouseCode>
       <Structure>211</Structure>
       <Style>4654</Style>
       <FloorArea_1>45</FloorArea_1>
       <InsideArea>4</InsideArea>
       <Price>87</Price>
       <HousePurpose>56787   </HousePurpose>
       <HouseProperty>87 </HouseProperty>
       <HouseID_1>452</HouseID_1>
       <ProjectNo_3>999</ProjectNo_3>
       <ContractNo>4</ContractNo>
       <Status_1>24 </Status_1>
       <BargainNum>2</BargainNum>
       <BargainTime>4265-09-09</BargainTime>
       <ChangeTime>4694-09-09</ChangeTime>
       <PayWay>4</PayWay>
       <FPMoney>42</FPMoney>
       <LoanMoney>4</LoanMoney>
       <FundMoney>24</FundMoney>
       <MoneyType>54 </MoneyType>
       <LoginTime>20091202</LoginTime>
      </Project>
      

  3.   

    To  :TommyTong
    你能帮帮我么?我不会做xml的,现在很急,要将数据做成xml格式的,谢谢了,最好提供一个案例之类的!
      

  4.   

    我有写过一个数据集导出Excel的函数,用TClientDataSet实现的。导出来后想还原可以用TClientDataSet.LoadFromFile加载XML文档还原。可以看这里:http://hi.baidu.com/0xcea4/blog/item/efda40ae580433f2fbed508a.html
      

  5.   

    太吓人了,XML 全是单节点,如果是这样不如直接用 INI