C# 是否可以从XML中获取值并将其转换?

C# 是否可以从XML中获取值并将其转换?,c#,linq-to-xml,C#,Linq To Xml,我正在创建一个程序,在该程序中,我将信息保存在一个XML中,在该XML中我将值及其类型(数据类型是XML)放入其中 有没有办法在对象变量及其数据类型中获取该值?我遇到的问题是,值是字符串或十进制、整数等 例如: <Answer ProblemID="0" ObjectiveID="1" IsCorrect="False"> <Result DataType="System.Nullable`1[System.Decimal]" Value="45" /> </A

我正在创建一个程序,在该程序中,我将信息保存在一个XML中,在该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>

听起来您想要的是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));
}
//将对象序列化为XML字符串
公共字符串ToXml(_-type-itm)
{
XmlSerializer ser=新的XmlSerializer(itm.GetType());
StringWriter sw=新的StringWriter();
序列序列化(软件、itm);
返回sw.ToString();
}
public\u类型FromXml(字符串str)
{
XmlSerializer ser=新的XmlSerializer(itm.GetType());
返回(_type)序列反序列化(新的StringReader(xml));
}
编辑

您可以通过使用要序列化(或不序列化)的项的属性来控制对象的序列化方式:

公共类电影
{
//将price字段序列化为具有给定名称空间的属性
[xmltattribute(Namespace=“www.diranieh.com”)]
公共十进制价格;
//序列化为
[XmlElement(“MovieName”)]
公共字符串标题;
//不要连载这个
[XmlIgnore]
公共评级;
}

更多信息

如果您有一个具有string、decimal、int属性的对象,您可以将该对象序列化为XML。我不确定这是否是你想要的


请提供一个例子——它会让生活变得更加清晰。例子更新了。。我使用的是Convert.ChangeType,但我不明白。。我想是因为我使用的是可空类型。听起来很有趣,让我再问一个问题,Muad,是否可以在根元素中添加属性?例如,日期。。。
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;

}