學校給了我一個XML文檔,我必須在屏幕上顯示信息。據我所知,Xml反序列化將是最簡單/最好的解決方案。C#XML反序列化錯誤(2,2)
我有這個至今:
public static List<Project> ProjectListDeserialize(string path)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Project>));
Stream filestream = new FileStream(path, FileMode.Open);
return (List<Project>)serializer.Deserialize(filestream);
}
public static Projects ProjectsDeserialize(string path)
{
XmlSerializer serializer = new XmlSerializer(typeof(Projects));
Stream filestream = new FileStream(path, FileMode.Open);
return (Projects)serializer.Deserialize(filestream);
}
這是XML文檔的樣子:
<?xml version="1.0" encoding="utf-16" ?>
<Projects xmlns="http://www.pulse.nl/DynamicsAX/2009/DataSets" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Project ID ="1000.0001" CustomerID="1000">
<Name>Project data key performance indicators</Name>
<Status>WorkInProgress</Status>
<StartDate>2011-01-01</StartDate>
<ExpectedCompletionDate>2011-08-01</ExpectedCompletionDate>
<CompletionDate xsi:nil="true" />
</Project>
<Project ID ="1000.0008" CustomerID="1000" ParentID="1000.0001">
<Name>Implementation</Name>
<Status>WaitListed</Status>
<StartDate>2011-06-01</StartDate>
<ExpectedCompletionDate>2011-08-01</ExpectedCompletionDate>
<CompletionDate xsi:nil="true" />
</Project>
</Projects>
兩種方法都拋出同樣的異常:
<Projects xmlns='http://www.pulse.nl/DynamicsAX/2009/DataSets was not expected
如何我可以正確反序列化上面的XML嗎?任何樣本都會有幫助!
你定義的項目/ s的類定義命名空間? – mmix 2011-04-20 09:21:28
您應該從Projects元素中刪除xmlns。或者寫一個自定義序列化程序。或者使用.NET SDK中的xsd工具生成與該Xml格式兼容的C#類 – 2014-01-14 14:40:35