답변:
예, xsd.exe 를 사용하여
D:\temp>xsd test.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.xsd'.
D:\temp>xsd test.xsd /classes
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.cs'.
노트
개발자 명령 프롬프트에서 디렉토리 를 d : \ temp 로 변경하는 방법에 대한 대답 은 유용 할 수 있습니다.
다차원 배열에 대한 클래스를 생성하는 경우 XSD.exe 생성기에 버그가 있지만 해결 방법이 있습니다.
xsd
실행하십시오 .
xsd.exe
C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
위해 발견되었습니다 : C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
VS 2012 이상에서 .NET 4.5 프로젝트를 작업하는 경우 XML 파일을 클래스로 특수 붙여 넣기 만하면 됩니다.
EDIT > Paste Special > Paste XML As Classes
xsd
만 출력은 거의 같습니다.
public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=> public $1 $2 { get; set; }
및`private \ w + \ w + Field; \ r \ n \ r \ n`을 사용하십시오.
처음에는 Paste Special이 성배라고 생각했습니다! 그러나 나는 그것을 시도했고 인디애나 존스 영화처럼 머리카락이 하얗게 변했습니다.
그러나 지금은 http://xmltocsharp.azurewebsites.net/을 사용 하고 이제는 젊습니다.
다음은 생성 된 부분입니다.
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
나는 이것이 다소 오래된 게시물이고 당신은 아마 계속 움직 였다는 것을 알고 있습니다.
그러나 나는 당신과 같은 문제가있어서 내 자신의 프로그램을 작성하기로 결정했습니다.
나를 위해 "xml-> xsd-> classes"라우트의 문제점은 완전히 유지 관리 할 수없는 코드를 방금 생성하여 결국 터프하게한다는 것입니다.
그것은 결코 우아하지 않지만 나를 위해 일을했습니다.
여기에서 얻을 수 있습니다 : 원하는 경우 제안하십시오.
svcutil을 고려해야합니다 ( svcutil question )
xsd.exe와 svcutil은 모두 XML 스키마 파일 (.xsd)에서 작동합니다. XML은이 두 도구 중 하나에서 사용할 스키마 파일을 준수해야합니다.
이를 위해 다양한 타사 도구도 있습니다.
Darin이 제안한대로 xsd를 사용할 수 있습니다.
또한 test.xsd 파일을 편집하여보다 합리적인 스키마를 작성하는 것이 좋습니다.
type="xs:string"
변경 될 수있는 type="xs:int"
정수 값
minOccurs="0"
으로 변경 될 수있는 minOccurs="1"
필드가 요구되는 경우
maxOccurs="unbounded"
에 변경 될 수있는 maxOccurs="1"
하나의 항목 만이 허용되는 곳
데이터를 더 검증하려면 고급 xsd-s를 생성 할 수 있지만 적어도 생성 된 c #에서 합리적인 데이터 유형을 제공하게됩니다.
XML을 C # 클래스로 변환하려면
참고 : 전체 시간 내에이 응용 프로그램은 교체 될 수 있지만 똑같은 일을하는 다른 도구가있을 수 있습니다.