2011-05-13 2 views
1

xsd.exe csxsd.exe 및 svcutil을 사용하여 꼬리를 쫓고 있습니다. 나는 뭔가를 놓치고 있어야합니다. 난 그냥 기본 속성과 목록 또는 [] 기본 개체를 원한다. 내가 뭘 놓치고 있니?간단한 XML에서 간단한 C# 클래스를 얻는 방법?

내가 얻는 xsd는 지나치게 복잡하며 개체에는 목록 또는 배열이 포함되어 있지 않습니다.

감사합니다,

+0

그렇다면 XML 파일로 시작해야할까요? 그리고 그 내용을 기반으로 XSD를 생성 한 다음 xsd.exe를 사용하여 C# 클래스를 생성합니다. 그렇다면 원하는 방식으로 XSD를 마크 업할 시간을 가질 수 있습니까? 여러 수준의 코드 생성을 통해 놀랍지 않게도 재미있는 결과를 얻을 수 있습니다. – Yuck

+0

그래서 ... xsd.exe를 사용하여 xsd를 생성했지만 다음 단계에서는 클래스에서 결과를 생성하는 동안 somthing의 간단한 C# 클래스에서 자식 객체의 컬렉션을 나타내는 속성 및 속성을 사용합니다. – Roger

답변

2

당신은 .XSD (스키마 파일)가 필요합니다은 xsd.exe /classes로 사용할 수 있습니다. .xsd 파일이 없으면 like this 도구를 사용하여 파일을 생성 할 수 있습니다. 대부분의 도구는 데이터 유형에 문자열을 사용하며, 마음에 들지 않으면 생성 된 스키마를 조정할 수 있습니다.

0

처리해야 할 XML과 일치하는 클래스를 작성하고 직렬화를 제어하는 ​​XML 직렬화 속성으로 표시하는 이유는 무엇입니까?

using System.IO; 
using System.Xml.Serialization; 

namespace AnXmlSample 
{ 

    class Program 
    { 
    static void Main(string[] args) 
    { 
     string xml = @"<document id='3'> 
         <name> 
         document name 
         </name> 
         <foo widget-id='12' > 
         The quick brown fox jumped over the lazy dog 
         </foo> 
        </document>" ; 
     StringReader sr = new StringReader(xml) ; 
     XmlSerializer serializer = new XmlSerializer(typeof(MyDataFromXml)) ; 
     MyDataFromXml instance = (MyDataFromXml) serializer.Deserialize(sr) ; 

     return ; 
    } 
    } 

    [XmlRoot("document")] 
    public class MyDataFromXml 
    { 
    [XmlAttribute("id")] 
    public int Id { get ; set ; } 

    [XmlElement("name")] 
    public string Name { get ; set ; } 

    [XmlElement("foo")] 
    public Widget Foo { get ; set ; } 

    } 

    public class Widget 
    { 
    [XmlAttribute("widget-id")] 
    public int id { get ; set ; } 

    [XmlText] 
    public string Content { get ; set ; } 
    } 

} 
+0

질문은 방법입니다. 간단한 클래스를 생성하기 위해서 ... – Roger

+0

제 경험으로 보면'xsd.exe'에 의해 생성 된 코드를 볼 때 "간단하다"라는 말은 일반적으로 생각할 수있는 형용사가 아닙니다. –