[英]C# XML serialization error
我有一個XML dox,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Server Manufacturer="SQL" Version="1">
<Database Name="Test123" >
<Devices>
<Device Name="Testdata" ..../>
<Device Name="Testlog" ..../>
</Devices>
</Database>
</Server>
我想像這樣反序列化:var database =(Database)xmlSerializer.Deserialize(new StreamReader(xmlFilePath));
其中Database是帶有設備集合的類。
當我注釋掉XML文件中的Server標記但我不想這么做時,它工作正常。 我收到一條錯誤消息:“ XMl文檔行(1、4)中存在錯誤”
如何告訴序列化忽略服務器標簽,是否需要在XML文件中放置名稱空間?
我嘗試將[XmlRootAttribute(“ Database”)]放在數據庫對象上,但仍然出現相同的錯誤
如果您真的不想創建Server
類,則從加載的xml中刪除<Server/>
“ wrapper”。
例如,代替此:
(Database)xmlSerializer.Deserialize(
new StreamReader(xmlFilePath));
做這個:
(Database)xmlSerializer.Deserialize(
XElement.Load(xmlFilePath).Element("Database").CreateReader());
您應該反序列化Server
類,如下所示:
public class Server
{
public string Manufacturer{get;set;}
public int Version {get;set;}
public Database Database {get;set;}
}
然后反序列化:
var server = (Server)xmlSerializer.Deserialize(new StreamReader(xmlFilePath));
var database = server.Database;
我相信您的XmlRootAttribute是問題,請在示例代碼下方將Server添加為XmlRootAttribute ..
[Serializable]
[XmlRootAttribute("Server", Namespace = "", IsNullable = false)]
public class YourClass
{
public YourClass()
{
}
[XmlAttribute]
public string Manufacturer { get; set; }
....
}
並反序列化服務器而不是數據庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.