2011-05-02 51 views
11

也許這已被問到,但我沒有找到它關於德爾福 - 我已經在Visual Studio中使用XSD.exe完成此操作:將XSD轉換爲'普通香草'表示在XSD中指定的實體的類 - 未綁定到XML文檔 - 用於在XSD中創建結構的類,不訪問符合XSD中概述的結構的數據。XSD到Delphi類沒有XML綁定

我要尋找一個實用程序或產品,將做到這一點(不費大錢...):例如,我有這樣一個模式:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="TDelphiClass"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="ID"/> 
       <xs:element ref="ConnectionString"/> 
       <xs:element ref="Group"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="ID" type="xs:integer"/> 
    <xs:element name="ConnectionString" type="xs:string"/> 
    <xs:element name="Group"type="xs:double"/> 
</xs:schema> 

我想要生成德爾福單位/類,它看起來像這樣:

字裏行間
unit uDelphiClass; 

interface 

uses 
    Classes, SysUtils; 

type 
    TDelphiClass = class(TObject) 
    fID: Integer; 
    fConnectionString: string; 
    fGroup: Double; 
    end; 

implementation 

end. 
+0

歡迎來到SO。編輯帖子時,請不要刪除代碼格式。閱讀關於代碼格式化的FAQ(編輯過程中可見):它可以幫助每個人清楚地瞭解您的意思。 – 2011-05-02 06:22:07

回答

5

閱讀(請使用更少的縮寫,例如,VS has multiple meanings,甚至在計算),你可能在Visual Studio或.NET使用的XSD.EXE工具SDK在C#或者C#中生成你的源代碼VB.NET語言。

如果您有Delphi Prism,您可以use XSD.EXE to generate Delphi Prism source code

德爾福棱鏡語言非常接近德爾福本地語言,所以這會給你一個開始。

這也應該與德爾福棱鏡試驗一起工作。

順便說一句:爲什麼你不想用獨立的方式使用XML Data Binding Wizard生成的Delphi本機代碼?它基於界面,但速度非常快,並且運行良好。

+0

抱歉格式化等 - 我通常不會繼續,直到晚上非常晚...是的,它是XSD.exe與一些參數,以獲得該結果。至於delphi的數據綁定向導,如果它是一個像我的例子那樣的模式,這不會是一個問題 - 但是對於一個龐大複雜的模式,需要很多工作來重新構建東西 - 特別是因爲數據綁定向導假設你「使用xml文檔重新保存數據,並且當您需要「普通香草」delphi類時,您需要爲此設置字段和屬性獲取器/設置器。將調查棱鏡工具。 Tnx-MNG – Vector 2011-05-02 13:26:22

+0

@Mikey:請注意,大型複雜模式通常無法以自動方式映射到「正常」編程語言。 – 2011-05-02 14:01:51

+0

我已經使用MS工具取得了成功,即使在相當複雜的嵌套類,枚舉,許多限制等模式下也是如此。技巧就是知道如何編寫** RIGHT ** XSD(不,不那麼容易.. ),以便發電機做你想要的。 – Vector 2011-05-02 17:01:48

3

http://sourceforge.net/projects/xxsd2code/生成C++,C#,C++/CLI和Java--它看起來像包含的'LanguageWriter'類並不是太複雜,無法擴展爲Delphi。例如,Java LanguageWriter少於400行。如果對德爾福社區有興趣,可以在短時間內實施並提供...

+0

我會檢查出來。但我想知道爲什麼這裏沒有太多的興趣。我主要編寫的中間件和服務器端代碼通常需要與Java和C#客戶端進行交互 - 確保每個人都能與您交談的最佳方式是使用XSD從一開始就定義您的類。 – Vector 2011-05-03 01:07:13