我正在用xsd.exe csxsd.exe和svcutil追逐我的尾巴。我必須錯過一些基本的東西。我只想要具有基本屬性和列表或[]的基本對象。我錯過了什麼?如何從簡單的XML獲得簡單的C#類?
我得到的xsd過於複雜,對象不包含列表或數組。
感謝,
我正在用xsd.exe csxsd.exe和svcutil追逐我的尾巴。我必須錯過一些基本的東西。我只想要具有基本屬性和列表或[]的基本對象。我錯過了什麼?如何從簡單的XML獲得簡單的C#類?
我得到的xsd過於複雜,對象不包含列表或數組。
感謝,
您將需要的.xsd(模式文件)與xsd.exe /classes
使用。如果您沒有.xsd文件,可以使用工具like this生成一個文件。大多數工具都假定數據類型爲字符串,如果你不喜歡它,你可以調整生成的模式。
爲什麼要構建一個匹配您必須處理的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 ; }
}
}
的問題是如何生成簡單的類... – Roger
我的經驗是,當我查看'xsd.exe'生成的代碼時,「簡單」不是一般想到的形容詞。 –
那麼您是從一個XML文件開始的?我認爲您是基於內容生成XSD,然後使用xsd.exe生成C#類?如果可以,你可以花時間以你想要的方式標記XSD?隨着代碼生成的多個級別,你會得到......有趣的...結果並不多。 – Yuck
so ...我用xsd.exe來生成一個xsd,但是下一步生成類的結果遠不是一個簡單的c#類,它的屬性和屬性代表了子對象的集合,就像在xml中 – Roger