2011-05-13 31 views
1

我正在用xsd.exe csxsd.exe和svcutil追逐我的尾巴。我必須錯過一些基本的東西。我只想要具有基本屬性和列表或[]的基本對象。我錯過了什麼?如何從簡單的XML獲得簡單的C#類?

我得到的xsd過於複雜,對象不包含列表或數組。

感謝,

+0

那麼您是從一個XML文件開始的?我認爲您是基於內容生成XSD,然後使用xsd.exe生成C#類?如果可以,你可以花時間以你想要的方式標記XSD?隨着代碼生成的多個級別,你會得到......有趣的...結果並不多。 – Yuck

+0

so ...我用xsd.exe來生成一個xsd,但是下一步生成類的結果遠不是一個簡單的c#類,它的屬性和屬性代表了子對象的集合,就像在xml中 – 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'生成的代碼時,「簡單」不是一般想到的形容詞。 –