試圖反序列化List。 即時得到以下錯誤:XmlSerializer非名稱空間反序列化列表
System.InvalidOperationException: There is an error in XML document (1, 2). ---> System.InvalidOperationException: was not expected.
看到別的quesitons,如:{"<user xmlns=''> was not expected.} Deserializing Twitter XML但這並不無論是解決我的問題。
這是一個XML示例
<authorizations>
<id>111</id>
<name>Name 1</name>
<Lists>
<List>
<id>1</id>
<id>2</id>
</List>
</Lists>
</authorizations>
<authorizations>
<id>222</id>
<name>Name 2</name>
<List />
</authorizations>
<authorizations>
<id>333</id>
<name>Name 3</name>
<List />
</authorizations>
類是如下創建:
public class Authorization
{
[XmlElement("id")]
public string Id{ get; set; }
[XmlElement("name")]
public string Name{ get; set; }
[XmlArray("Lists")]
[XmlArrayItem("List")]
public List[] Items{ get; set; }
}
public class List
{
[XmlElement("id")]
public string Id{ get; set; }
}
public class AuthorizationList
{
[XmlArray("authorizations")]
public Authorization Authorizations{ get; set; }
}
試圖改變列表中XmlArray,XmlArrayItem或元素。但是當我反序列化時仍然會出現相同的錯誤。
反序列化代碼示例:
public static T FromXml<T>(string xmlString)
{
T obj = default(T);
if (!string.IsNullOrWhiteSpace(xmlString))
{
using (var stringReader = new StringReader(xmlString))
{
var xmlSerializer = new XmlSerializer(typeof(T));
obj = (T)xmlSerializer.Deserialize(stringReader);
}
}
return obj;
}
這不是一個*有效的*(期望通過'XmlSerializer')xml。有效的從'<?xml version =「1.0」?>'開始。您可以嘗試在調用'Deserialize()'之前添加此行。另一件事是丟失數組項的容器(用'XmlRootAttribute'表示),請參閱[本](http://stackoverflow.com/q/126155/1997232)。 – Sinatr
'XmlSerializer'可以處理缺少XML聲明的XML。但是,XML必須有且僅有一個[根元素](https://en.wikipedia.org/wiki/Root_element)。這個XML有多個根元素,所以根本就不是XML。 – dbc
要嘗試添加根元素並讓你知道。感謝您的快速響應 – RSmart