XML 파일에서 C # 클래스를 생성 할 수 있습니까?
답변
예, 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 생성기에 버그가 있지만 해결 방법이 있습니다.
답변
VS 2012 이상에서 .NET 4.5 프로젝트를 작업하는 경우 XML 파일을 클래스로 특수 붙여 넣기 만하면 됩니다.
- XML 파일의 내용을 클립 보드에 복사
- 편집기에서 수업을 붙여 넣을 장소를 선택하십시오.
- 메뉴에서
EDIT > Paste Special > Paste XML As Classes
답변
처음에는 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 #에서 합리적인 데이터 유형을 제공하게됩니다.
답변
XSD 파일에서 스키마 클래스를 작성하려면 아래 구문을 사용하십시오.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
