2012-02-18 28 views
1

我該如何反序列化並投射下列xml文件? 我想有效的元素被鑄造爲bool屬性和時間對象的DateTime屬性簡單的XML序列化與自定義節點值轉換?

<Foo> 
    <Valid>True</Valid> 
    <Time>19/02/2012 00:25:50</Time> 
</Foo> 

被鑄造,而不是與反射請

+1

@JohnKoerner - 哈!打你23秒。這個問題帶來的唯一價值在於誰首先詢問這個顯而易見的問題。 – 2012-02-18 21:57:25

+0

我知道我可以使用XmlSerialize,但它將它們轉換爲字符串,我希望它轉換爲真實的對象。有可能嗎? – user829174 2012-02-18 21:58:22

回答

3

的Xml反序列化。

與屬性創建類:

class Foo 
{ 
    [XmlAttribute] 
    public bool valid; 

    [XmlAttribute] 
    public DateTime time; 
} 

記住 - 字段必須是公共的。

然後:

FileStream fs = new FileStream(filename, FileMode.Open); 
XmlReader reader = XmlReader.Create(fs); 
XmlSerializer xs = new XmlSerializer(typeof(Foo)); 
Foo foo = (Foo)xs.Deserialize(reader); 
fs.Close(); 
0

.NET有一個XmlSerializer對象,讓你序列化和反序列化對象和從一個XML流,但它比你的XML文件以不同的方式創建它的標籤。 也許你可以創建一個自定義序列化器,它將根據你的規則進行操作。

Here你可以找到一個例子(它使用XSD文件來設置序列化的規則)

+0

你能詳細說說你提到的xmlserializer嗎?如果需要,我可能會更改XML。謝謝 – user829174 2012-02-18 22:04:42

+0

如果你的xml文件的模式不重要,你可以創建一個Maciej Dopieralski提到的類型,xmlserializer將爲你做其餘的:) – Beatles1692 2012-02-18 22:07:02