XSD 코드 생성기 비교
xsd 스키마 파일에서 코드 생성에 대한 연구를 수행하고 있습니다. 내 요구 사항 :
- 필요한 경우 제네릭 컬렉션을 사용하여 C # 2.0 코드 (또는 그 이상)를 생성해야합니다.
- xsd 주석에서 주석을 생성해야합니다.
- 완전히 제거 가능한 코드를 생성해야합니다.
- 동일하게 여러 xsd에서 생성 할 때 resuable basetype을 생성 할 수 있습니다.
(내 다른 질문도 참조하십시오 : 공통 포함을 사용하여 xsd에서 여러 클래스를 생성하는 방법 및 wsdl의 xs : 문서 태그에서 주석을 생성하는 방법은 무엇입니까?
다음 옵션을 찾았습니다.
- xsd.exe (SDK 및 Visual Studio와 함께 제공됨) 사용
- 에서 XSDCodeGen 다니엘 Cazzulino
- Xsd2Code
- CodeXS
- 마이크로 소프트의 XsdObjectGen
- XSDClassGen (작업에서 누락 된 것)
내가 놓친 유전자 재조합? (1), (2) 및 (5)는 2.0 코드를 생성하지 않기 때문에 (3)에서 코드를 생성하는 데 문제가 있습니다. 코드를 생성 할 때 무엇을 사용합니까?
나는 XSD2Code 가 현재 사용 가능한 최고의 도구 라고 생각 합니다 (2011 년).
최근에 사용 가능한 도구를 분석하는 작업에서 동일한 프로세스를 거쳤던 작업 VS2010 과 관련된 된 업데이트를 제공 할 수있는 생각했습니다 .
우리의 주요 동인은 xsd.exe 가 XSD 주석 에서 XML 문서를 생성하지 않는다는 것입니다. 우리는 수백 개의 유형 정의가 있기 때문에 원했습니다. 위에없는 모든 도구와 다른 도구를 시도하지 않았는데 대부분은 사용하지 않고 유지 관리 갑자기거나 VS2010에서 사용할 수있는 xsd.exe의 현재 기능과 일치 할 수 없습니다.
그러나 Xsd2Code 는 훌륭한 도구이며 적극적으로 유지 관리되는 것입니다. 위에있는 모든 기능과 훨씬 더 많은 기능을 제공합니다. CodePlex 페이지에는 다양한 옵션이있어 효율적으로 이용할 수 있습니다.
또한 통합 메뉴 통합 및 사용자 지정 빌드 도구를 포함하여 사용한 VS 통합이 있습니다 (즉, 프로젝트에서 XSD를 참조하고 사용자 도구 지정을 지정하면 XSD를 업데이트 할 때 코드가 자동으로 업데이트됨을 의미합니다). 전체적으로 우리는 많은 작업을 절약했습니다.
내가 본 다른 도구에 대한 요약 :
- Dingo- Java에 더 잘 맞춰진 것입니다.
- XSDCodeGen- 사용자 지정 빌드 도구를 작성하는 방법에 대한 추가 데모
- CodeXS- 상당히 좋은 도구이지만 통합, 기능이 적고 더 이상 유지되지 않습니다.
- XSDObjectGen- 더 이상 유지되지 않는 기능이 현재 xsd.exe보다 기능이 적습니다.
- XSDClassGen- 찾을 수 없습니다.
- OXM 라이브러리 - 이 프로젝트를보고 유지하고 뛰어난 기능을 권장 합니다.
- LINQ to XSD- 매우 멋진 프로젝트이지만 내가 찾던 것은 아닙니다.
: XSD2 코드를 사용하기로 결정 많은 명령 줄 도구를 사용하여 여러 가지 문제를 발견했습니다. (예 : 자동 매개 변수 및 .NET 버전은 순서에 따라 달라짐) 특히 아니라 일부 인수가 특정 순서로있을 것입니다. 다음은 XSD2Code를 사용하여 코드를 생성 한 다음 출력을 정리하는 데 단계 단계입니다. 필요에 따라 적용되는 비트를 가져옵니다.
다음 배치 파일을 실행하여 초기 코드를 생성하고 경로를 올바른 위치로 변경합니다.
@echo off
set XsdPath=C:\schemas
set OutPath=%XsdPath%\Code
set ExePath=C:\Progra~1\Xsd2Code
set Namespace=InsertNamespaceHere
echo.Starting processing XSD files ...
for /f %%a IN ('dir %XsdPath%\*.xsd /a-d /b /s') do call:ProcessXsd %%a
echo.Finished processing XSD files ...
echo.&pause&
goto:eof
:ProcessXsd
%ExePath%\Xsd2Code %~1 %Namespace% %XsdPath%\Code\%~n1%.cs /pl Net35 /if- /dc /sc /eit
echo.Processed %~n1
goto:eof
필요에 따라 다음 단계를 수행하여 생성 된 코드를 정리합니다.
- 정규식 바꾸기-현재 프로젝트, 대소 문자, 전체 단어- [System.Runtime.Serialization.DataContractAttribute (Name : b * = : b * : q, : b Namespace : b = : b * {: q})]를 [DataContract ( 네임 스페이스 = \ 1)]
- 바꾸기-현재 프로젝트, 케이스, 전체 단어- [System.Runtime.Serialization.DataMemberAttribute ()] 를 [DataMember]로
- 정규식 바꾸기-현재 프로젝트, 대소 문자, 전체 단어 -System.Nullable \ <{: w}> 을 \ 1 \?
- - 열려있는 문서, 경우, 전체 단어를 - 대체 정규식 유형 : {w} 와 \ (1)
- 바꾸기-열린 문서, 대소 문자, 전체 단어 -System.DateTime 을 DateTime 으로 변경 한 다음 누락 된 using 문 추가
- 바꾸기-열린 문서, 대소 문자, 전체 단어- [System.Xml.Serialization.XmlIgnoreAttribute ()] 를 [XmlIgnore]로
- 바꾸기-현재 프로젝트 -System.Xml.Serialization.XmlArrayAttribute 를 XmlArray로
- 바꾸기-현재 프로젝트 -System.Xml.Serialization.XmlArrayItemAttribute 를 XmlArrayItem으로
- 대체 정규식 - 현재 프로젝트 - [: ㅁ] + /// \ </ \ 비고> 와 ,
누군가에게 도움이되기를 바랍니다.
아직 확인하지 않았지만 Linq2XSD 가 유용한 대안이 될 수 있습니다.
나는 이것을 시도 할 것입니다. LINQ with XSD 생성은 당신이 언급 한 어떤 도구보다 좋을 것입니다.
OpenSource 프로젝트 XSD to Classes 는 저에게 완벽하게 작동했습니다.
저는 1 년 전에 CodeXS를 사용한 프로젝트입니다. 약간의 조정 (생성 된 코드를 약간 정리 한 스크립트)으로 매력적으로 작동했습니다.
또한 Dingo 는 매우 우수한 확장 성 기능 (우리가 필요로하지 않았던)을 가지고 있습니다.
OxmLibrary 시도 - http://oxmlibrary.codeplex.com
내가 찾은 최고의 XSD 클래스 생성기는 thinktecture WSCF.blue 입니다. 두 가지 이유로 대부분의 다른 것보다 좋습니다.
- 이름 지정을 수정합니다. 이는 유형 및 속성 이름의 대 / 소문자 및 복수화를 의미합니다.
- 각 클래스에 대해 별도의 파일을 만듭니다.
또는 T4 솔루션을 찾고 있다면 XsdClassGen 을 사용해 볼 수 있습니다 . 이것은 나를 위해 작동하지 않습니다. 그러나 좋은 소식은 T4 파일이므로 쉽게 고칠 수 있다는 것입니다!
다음은 XSLT를 사용하여 XML을 C # 코드로 변환하는 웹 기반 예제 입니다. 이 예제에서는 서비스 (기본적으로 서비스 이름, 네임 스페이스 및 작업 목록)를 설명하는 모델 (XML)을 가져온 다음 C # .net에서 WCF 서비스 (인터페이스, 메시지, 오류, 테스트 등)를 모두 생성합니다.
참고 URL : https://stackoverflow.com/questions/386155/comparison-of-xsd-code-generators
'ProgramingTip' 카테고리의 다른 글
R은 할당 연산자 인`->`를 정확히 어떻게 구문 분석 할 수 있습니까? (0) | 2020.10.17 |
---|---|
Java 7 및 8에서 메소드의 최대 크기 (0) | 2020.10.17 |
jQuery slideUp 및 slideDown에 해당하는 CSS3? (0) | 2020.10.17 |
빈 인터페이스 코드 유전자가 있습니까? (0) | 2020.10.17 |
_ (밑줄) 변수는 어디에 어떻게 지정 검증? (0) | 2020.10.17 |