2011-05-02 5 views
11

아마도 이것은 이전에 묻지 만 델파이와 관련하여 찾지 못했습니다. Visual Studio에서 XSD를 정확히 사용하면 XSD가 ' plain vanilla ' XSD에서 구조체를 만들기위한 XML 문서에 바인딩되지 않은 XSD에 지정된 엔터티를 나타내는 클래스로, XSD에 설명 된 구조를 따르는 데이터에는 액세스하지 않습니다.XSD에서 XML 바인딩이없는 델파이 클래스

I (즉 ... 거액하지 않는 비용)이 작업을 수행하는 유틸리티 또는 제품을 찾고 :

<?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

SOCOM에 오신 것을 환영합니다. 게시물을 수정할 때 코드 서식을 제거하지 마십시오. 코드 형식에 대한 FAQ (편집 중 표시)를 읽으십시오. 모든 사람이 의미하는 바를 명확하게 파악하는 데 도움이됩니다. –

답변

5

읽기 (심지어 컴퓨팅, 예, VS has multiple meanings를 들어, 이하 약어를 사용하십시오), 그리고 당신은 아마 비주얼 스튜디오 또는 .NET에서 XSD.EXE 도구를 사용 : 다음과 같습니다 델파이 단위/클래스 C#에서 소스 코드를 생성하는 SDK VB.NET 언어.

Delphi Prism이있는 경우 use XSD.EXE to generate Delphi Prism source code 수 있습니다.

Delphi Prism 언어는 Delphi의 모국어와 매우 유사하므로 시작할 수 있습니다.

이 또한 Delphi Prism 시험판에서도 작동합니다.

왜 BTW : XML Data Binding Wizard에 의해 생성 된 델파이 네이티브 코드를 독립 실행 형으로 사용하고 싶지 않은 이유는 무엇입니까? 인터페이스 기반이지만 꽤 빠르며 잘 작동합니다.

+0

서식 설정 등에 대해 미안합니다 - 저는 밤늦게까지 아주 일반적으로 그렇게하지 않습니다 ... 그렇습니다. 그 결과를 얻기위한 몇 가지 매개 변수가있는 XSD.exe였습니다. 델파이 데이터 바인딩 마법사에 관해서는, 필자의 예제와 같은 스키마라면 문제가되지는 않을 것입니다. 그러나 복잡한 스키마가 큰 경우, 데이터를 다시 작성하기 위해서는 많은 작업이 필요합니다. 특히 데이터 바인딩 마법사는 ' 데이터를 XML 문서로 유지하고 '일반 바닐라'델파이 클래스를 원한다면 필드와 속성 getters/setter를 설정해야합니다. Prism 도구를 조사합니다. Tnx-MNG – Vector

+0

@Mikey : 큰 복잡한 스키마는 일반적으로 자동화 된 방식으로 '일반적인'프로그래밍 언어에 매핑 될 수 없다는 점에 유의하십시오. –

+0

중첩 된 클래스, 열거 형, 수많은 제한 등이있는 상당히 복잡한 스키마에서도 MS 도구를 사용하여 greate 성공을 거두었습니다. 트릭은 ** RIGHT ** XSD를 작성하는 방법을 아는 것입니다. .) 그래서 발전기는 당신이 원하는 것을합니다. – Vector

3

http://sourceforge.net/projects/xxsd2code/은 C++, C#, C++/CLI 및 Java를 생성하며 포함 된 'LanguageWriter'클래스가 Delphi에서 확장하기에는 너무 복잡하지는 않습니다. 예를 들어, Java LanguageWriter에는 400 라인 미만이 있습니다. Delphi 커뮤니티에 관심이 있다면 짧은 시간 내에 구현되고 기여 될 수 있습니다.

+0

나는 그것을 조사 할 것이다. 그러나 나는 왜 이것이 결코 많은 관심을 가지지 않은지 궁금합니다. 대부분 Java 및 C# 클라이언트와 인터페이스해야하는 미들웨어 및 서버 측 코드를 주로 작성합니다. 모든 사람들이 대화 할 수 있도록하는 가장 좋은 방법은 XSD를 사용하여 처음부터 클래스를 정의하는 것입니다. – Vector

관련 문제