将 XML 序列化为 CSharp class

Serialize XML into CSharp class

我在 json 数据字段中有一个 xml 字符串。我想提取该值并将其与该字段的数据库值进行比较。

我使用 xsd.exe 为那个 xml 生成了 class(从 here). I am using that class to deserialize the xml response. Then i used the method from here 看到反序列化。

我用过

`XmlSerializer serializer1 = new XmlSerializer(typeof(class_gen_from_xml))

在下面的代码中,我从 json 响应中提取了 xml 源,然后执行如下操作:

string xmlSource = "<ResultSet><Result precision=\"address\">    <Latitude>47.643727</Latitude></Result></ResultSet>";

XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
ResultSet output;

using (StringReader reader = new StringReader(xmlSource))
{
   output = (ResultSet)serializer.Deserialize(reader);
}

` 我得到了一个异常,调试没有显示任何内容。我在代码中遗漏了什么吗?

你的 ResultSet class 可能有问题,这对我来说很好:

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class ResultSet
{
    private ResultSetResult[] resultField;

    [System.Xml.Serialization.XmlElementAttribute("Result")]
    public ResultSetResult[] Result
    {
        get
        {
            return this.resultField;
        }
        set
        {
            this.resultField = value;
        }
   }
}

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ResultSetResult
{
    private decimal latitudeField;
    private string precisionField;

    public decimal Latitude
    {
        get
        {
            return this.latitudeField;
        }
        set
        {
           this.latitudeField = value;
        }
    }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string precision
    {
        get
        {
            return this.precisionField;
        }
        set
        {
            this.precisionField = value;
        }
    }
}

使用你的反序列化代码:

static void Main(string[] args)
{
    string xmlSource = "<ResultSet><Result precision=\"address\">    <Latitude>47.643727</Latitude></Result></ResultSet>";

    XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
    ResultSet output;

    using (StringReader reader = new StringReader(xmlSource))
    {
        output = (ResultSet)serializer.Deserialize(reader);
    }
}