![](/img/trans.png)
[英]XML returns NULL on XmlSerializer Deserialize DotNet Core C# (Console App)
[英]c# XMLSerializer returns null
private ResultReferences<T> GetList<T>(string result) where T : class
{
TextReader reader = new StringReader(result);
XmlSerializer serializer = new XmlSerializer(typeof(ResultReferences<T>));
ResultReferences<T> response = (ResultReferences<T>)serializer.Deserialize(reader);
return response;
}
這是解析字符串xml的函數:
這是我的xml字符串:
<?xml version="1.0" encoding="UTF-8"?>
<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/some-api/ getCurrencyRate.xsd">
<rates date="2015-07-07">
<item cur1="USD" cur2="RUR">57.8215</item>
<item cur1="EUR" cur2="RUR">63.9852</item>
<item cur1="EUR" cur2="USD">1.1177</item>
<item cur1="USD" cur2="EUR">0.9037</item>
</rates>
</result>
正好在一行中:
ResultReferences<T> response = (ResultReferences<T>)serializer.Deserialize(reader);
返回null,為什么呢? 我的xml錯誤嗎?
這是序列化的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace mynamespace
{
[XmlType(TypeName = "currency")]
public class oCurrency
{
[XmlAttribute]
public long id { get; set; }
[XmlAttribute]
public string name { get; set; }
}
}
這是與您發布的XML相對應的C#代碼:
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace Xml2CSharp
{
[XmlRoot(ElementName="item")]
public class Item {
[XmlAttribute(AttributeName="cur1")]
public string Cur1 { get; set; }
[XmlAttribute(AttributeName="cur2")]
public string Cur2 { get; set; }
[XmlText]
public string Text { get; set; }
}
[XmlRoot(ElementName="rates")]
public class Rates {
[XmlElement(ElementName="item")]
public List<Item> Item { get; set; }
[XmlAttribute(AttributeName="date")]
public string Date { get; set; }
}
[XmlRoot(ElementName="result")]
public class Result {
[XmlElement(ElementName="rates")]
public Rates Rates { get; set; }
[XmlAttribute(AttributeName="xsi", Namespace="http://www.w3.org/2000/xmlns/")]
public string Xsi { get; set; }
[XmlAttribute(AttributeName="schemaLocation", Namespace="http://www.w3.org/2001/XMLSchema-instance")]
public string SchemaLocation { get; set; }
}
}
當然是生成的; 這就是為什么它如此精確的原因。 無論如何,它與您提供的C#類幾乎沒有相似之處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.