簡體   English   中英

將XML序列化為CSharp類

[英]Serialize XML into CSharp class

我在json數據字段中有一個xml字符串。 我想提取該值並將其與該字段的數據庫值進行比較。

我使用xsd.exe生成了該xml的類(從此處看到)。 我正在使用該類反序列化xml響應。 然后我從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類可能有問題,對我來說很好用:

[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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM