2012-08-27 4 views
3

제 3 자 웹 서비스에 업로드하기 위해 작업 기간에서 행을 가져 와서 단일 XML 파일로 변환해야하는 Delphi 애플리케이션을 개발 중입니다.데이터베이스 쿼리의 행을 XML 파일로 변환하는 방법은 무엇입니까?

이를 수행 할 수있는 구성 요소 또는 라이브러리가 있습니까? 그렇지 않은 경우, DB2XML 변환기를 빌드하는 최선의 코드 접근법은 무엇입니까?

대부분의 XML 질문은 다른 유형의 데이터로 변환하는 방법에 관한 것입니다.

참고 : 데이터베이스는 MySQL 또는 Firebird입니다.

+0

이 그렇게 사소한 수행하는 코드를 시도, 왜 당신은 라이브러리를 사용할까요? 직접 코드를 굴려보십시오. –

답변

7

TDataSetProvider 구성 요소를 사용하여 TClientDataSet을 TDataSet 내용으로 채운 다음 SaveToFile 메서드를 사용하여 xml 파일을 만들 수 있습니다.

이 샘플

procedure DataSetToXML(DataSet : TDataSet; const FileName:string); 
var 
LProvider : TDataSetProvider; 
LClient : TClientDataSet; 
begin 
    LProvider:=TDataSetProvider.Create(nil); 
    try 
    LProvider.DataSet:=DataSet; 
    LClient:=TClientDataSet.Create(nil); 
    try 
     DataSet.DisableControls; 
     try 
     if not DataSet.Active then 
      DataSet.Active:=True; 
     LClient.SetProvider(LProvider); 
     LClient.Active:=True; 
     LClient.SaveToFile(FileName, dfXMLUTF8); 
     finally 
     DataSet.EnableControls; 
     end; 
    finally 
     LClient.Free; 
    end; 
    finally 
    LProvider.Free; 
    end; 
end; 
+0

아주 좋습니다. 다음에 넣어야 할 것은 파일을 열고 더 많은 데이터를 삽입하는 것입니다 ... – PSyLoCKe

+0

+1, 이제 [TXMLTransformClient']의 의미에 대해 궁금합니다 (http://docwiki.embarcadero.com/Libraries/ en/Xmlxform.TXMLTransformClient) 및 관련 (일부 오래된 학교가 남아있을 수 있습니까?) – TLama

+0

XMLTransportClient는 ClientDataSet (D3, IIRC의 상위 SKU에서 사용 가능)보다 훨씬 적은 시간이었고 D5에서 더 광범위하게 사용할 수있게되었습니다. XMLTransportClient 나는 SOAP/WSDL 지원을 위해 나중에 추가되었다고 믿는다. (나는 D3이 출시되었을 때 SOAP이 존재하지 않았다고 생각한다.) –

0

테이블을 TClientDataSet에 넣은 다음 XMLData 속성을 사용하여 XML로 내보낼 수 있습니다.

관련 문제