2011-09-10 71 views
1

我正在創建一個程序,將信息保存在XML中,在該XML中,我將值和類型(DataType是一個XML)。是否可以從XML中獲取值並將其轉換?

有沒有辦法讓對象變量中的值與它的數據類型?我有問題,其中的值是一個字符串或小數,整數等

例:

<Answer ProblemID="0" ObjectiveID="1" IsCorrect="False"> 
    <Result DataType="System.Nullable`1[System.Decimal]" Value="45" /> 
</Answer> 
<Answer ProblemID="0" ObjectiveID="1" IsCorrect="False"> 
    <Result DataType="System.Nullable`1[System.Decimal]" Value="Null" /> 
</Answer> 
<Answer ProblemID="0" ObjectiveID="5" IsCorrect="False"> 
    <Result DataType="System.Nullable`1[Factory.Factories.Comparison2.Comparators]" Value="Null" /> 
</Answer> 
+1

請提供一個例子 - 它會讓生活變得更清晰。 –

+0

示例更新..我使用Convert.ChangeType,但是,我不明白..我雖然因爲我使用可空類型。 – Darf

回答

2

聽起來像你想要的是XML序列化,這樣的事情:

// serialize an object to XML string 
public string ToXml<_type>(_type itm) 
{ 
    XmlSerializer ser = new XmlSerializer(itm.GetType()); 
    StringWriter sw = new StringWriter(); 
    ser.Serialize(sw, itm); 
    return sw.ToString(); 
} 

public _type FromXml<_type>(string str) 
{ 
    XmlSerializer ser = new XmlSerializer(itm.GetType()); 
    return (_type)ser.Deserialize(new StringReader(xml)); 
} 

編輯

您可以通過使用要序列化(或不)的項目的屬性來控制對象的序列化方式:

public class Movie 
{ 
    // Serialize the price field as an attribute with the given namspace 
    [XmlAttribute(Namespace ="www.diranieh.com")] 
    public decimal price; 

    //serialize as <MovieName> 
    [XmlElement("MovieName")] 
    public string Title; 

    // dont serialize this 
    [XmlIgnore] 
    public int Rating; 

} 

更多信息here on msdn

+0

多一個問題Muad,可以在根元素中添加一個屬性? 例如,日期 ... Darf

相關問題