是否可以从XML获取值并进行转换?

时间:2011-09-10 15:48:52

标签: c# linq-to-xml

我正在创建一个程序,我将信息保存在XML中,在该XML中我放置了值及其类型(DataType是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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

好吧,如果你有一个带有string,decimal,int属性的对象,你可以将对象序列化为XML。我不确定这是不是你想要的......

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx