2012-02-28 63 views
0

我想將對象導出到XML並創建XSD。以下是基類爲分層數據創建XSD

class Owner 
{ 
    private int id; 
    private string name; 
    private List<Car> cars; 
    private int age; 
} 

class CarTemplate 
{ 
    private int drive; 
    private double engineCc; 
} 

class Car 
{ 
    private int id; 
    private string name; 
    private double cost; 
    private CarTemplate template; 
} 

以下是修改後的結構,我想出口到XML和創建XSD出來的

class ExportedOwner 
{ 
    private int id; 
    private string name; 
    private List<Car> cars; 
} 

class ExportedCar 
{ 
    private string name; 
    private double cost; 
    private CarTemplate template; 
} 

XML的結構應以以下格式

<?xml version="1.0" encoding="utf-8" ?> 
<Owner> 
    <id>1</id> 
    <Name>John</Name> 
    <Age>49</Age> 
    <Cars> 
     <Car> 
      <id>1</id> 
      <Name>Merc Class C</Name> 
      <CarTemplate> 
       <drive>2</drive> 
       <engineCc>2500</engineCc> 
      </CarTemplate> 
     </Car> 
     <Car> 
      <id>2</id> 
      <Name>Merc Class M</Name> 
      <CarTemplate> 
       <drive>4</drive> 
       <engineCc>2900</engineCc> 
      </CarTemplate> 
     </Car> 
    </Cars> 
</Owner> 

如何爲XML格式創建XSD。我希望XSD將XML文件導入到應用程序中。

回答

0

有2個不同的問題,在這裏回答...

首先,如何將對象導出到一個XML文件中。在.NET中有很多方法可以做到這一點。兩個最常見的(XmlSerializer和DataContractSerializer)在blog post中並排比較。

您的問題的第二部分更廣泛些。從現有的XML文件生成xsd模式並不是一門精確的科學,但有一些工具可以從XML文件中推斷(或猜測)模式。有各種各樣的小工具可以爲你做到這一點 - 它可能值得嘗試其中的一些,並看看哪一個工具給你最好的結果。與往常一樣,google is your good friend :)

0

如果你想生成XML出你的類動態的,你可以使用System.Reflection

例如:

Type type = typeof(ExportedOwner); 

var propertyinfos = type.GetProperties(); // gives you a list of all properties of ExportedOwner 

然後根據您最喜愛的XML編寫的規範生成的XML。

+0

Xsd2Code從xsd模式生成cs/vb文件,而不是其他方式。 – MattDavey 2012-02-28 10:00:50

+0

嗯,真的 - 我一定弄糊塗了我用的另一個插件的工具。奇怪 - 可能已經發誓它被稱爲那樣。 – Alex 2012-02-28 10:16:34

+0

我想你的意思是xsd.exe :) – MattDavey 2012-02-28 10:24:35