我有一個客戶端接收到的XML,我需要將它串行化爲類結構。這裏是XML結構。將XML反序列化到具有屬性的類
<?xml version="1.0" encoding="utf-8"?>
<MainData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<listofChannels>
<item type="DAY CHANNEL">
<channelName>one</channelName>
<channelPort>11</channelPort>
<ServerDetail ipaddress="127.0.0.1" port="80"/>
</item>
<item type="NIGHT CHANNEL">
<channelName>one</channelName>
<channelPort>11</channelPort>
<ServerDetail ipaddress="127.0.0.2" Port="80"/>
</item>
</listofChannels>
</MainData>
現在我試圖創建一個C#類來表示這個並獲得通道列表。所以我寫了這段代碼,但是我沒有得到這個列表,它是空白的。
MainData mainData = new MainData();
var serializer = new XmlSerializer(typeof(MainData));
using (TextReader reader = new StreamReader(dataFilePath)) // dataFilePath is the FilePath
{
mainData = (MainData)serializer.Deserialize(reader);
}
這裏是我的班
public class MainData
{
public List<Channel> listofChannels { get; set; }
}
public class Channel
{
public string Type;
[XmlAttribute("channelName")]
public string Name;
[XmlAttribute("channelPort")]
public int Port;
public ChannelDetail details;
}
public class ChannelDetail
{
[XmlAttribute("ipaddress")]
public string IPAddress { get; set; }
[XmlAttribute("port")]
public int Port { get; set; }
}
我建議使用JSON序列化,它會有所幫助,因爲如果存在不安全的字符,XML序列化可能會導致問題,除非您計劃轉義字符串[link](https://msdn.microsoft.com/ EN-US /庫/ system.security.securityelement.escape(v = vs.110)的.aspx)。 – Darkestlyrics