使用 XmlSerializer 的问题
Issue with using XmlSerializer
这是我的 C# 代码:
public static T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser =
new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
var test = ser.Deserialize(sr); //*this is the line that breaks*
return (T)ser.Deserialize(sr);
}
}
这是我的 XML
<releaseinfo>
<mediapackagedirectory>C:\Temp\Test1\</mediapackagedirectory>
<revision>A</revision>
<files>
<file>C:\Temp\Test1\test1.zip</file>
<file>C:\Temp\Test1\test1.zip</file>
</files>
<target>C:\Temp\Target\</target>
</releaseinfo>
这是我得到的错误:
Exception: {"There is an error in XML document (1, 2)."}
InnerException: {"<releaseinfo xmlns=''> was not expected."}
我收到的错误似乎与命名空间有关,即使我的 xml 没有命名空间。如图所示。
假设您有一些 class "Releaseinfo",将以下属性添加到顶部:
[Serializable, XmlRoot("releaseinfo")]
public partial class Releaseinfo
{
...
}
这里有更多详细信息:
另外:
问:为什么要反序列化两次?为什么不只是 return (T)ser.Deserialize(sr);
?第一行是 "test code"?
附带说明:请尽可能使用文字(而不是屏幕截图)。
这是我的 C# 代码:
public static T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser =
new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
var test = ser.Deserialize(sr); //*this is the line that breaks*
return (T)ser.Deserialize(sr);
}
}
这是我的 XML
<releaseinfo>
<mediapackagedirectory>C:\Temp\Test1\</mediapackagedirectory>
<revision>A</revision>
<files>
<file>C:\Temp\Test1\test1.zip</file>
<file>C:\Temp\Test1\test1.zip</file>
</files>
<target>C:\Temp\Target\</target>
</releaseinfo>
这是我得到的错误:
Exception: {"There is an error in XML document (1, 2)."}
InnerException: {"<releaseinfo xmlns=''> was not expected."}
我收到的错误似乎与命名空间有关,即使我的 xml 没有命名空间。如图所示。
假设您有一些 class "Releaseinfo",将以下属性添加到顶部:
[Serializable, XmlRoot("releaseinfo")]
public partial class Releaseinfo
{
...
}
这里有更多详细信息:
另外:
问:为什么要反序列化两次?为什么不只是
return (T)ser.Deserialize(sr);
?第一行是 "test code"?附带说明:请尽可能使用文字(而不是屏幕截图)。