C# 使用XmlSerializer时出现问题
这是我的C#代码:C# 使用XmlSerializer时出现问题,c#,xml,xml-parsing,xmlserializer,xml-deserialization,C#,Xml,Xml Parsing,Xmlserializer,Xml Deserialization,这是我的C#代码: publicstatict反序列化(字符串输入),其中T:class { System.Xml.Serialization.XmlSerializer ser= 新的System.Xml.Serialization.XmlSerializer(typeof(T)); 使用(StringReader sr=新StringReader(输入)) { var test=ser.Deserialize(sr);//*这是中断的行* 返回(T)序列反序列化(sr); } } 这是我的
publicstatict反序列化(字符串输入),其中T:class
{
System.Xml.Serialization.XmlSerializer ser=
新的System.Xml.Serialization.XmlSerializer(typeof(T));
使用(StringReader sr=新StringReader(输入))
{
var test=ser.Deserialize(sr);//*这是中断的行*
返回(T)序列反序列化(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>
C:\\Temp\\Test1\\
A.
C:\\Temp\\Test1\\Test1.zip
C:\\Temp\\Test1\\Test1.zip
C:\\Temp\\Target\\
下面是我得到的错误:
Exception: {"There is an error in XML document (1, 2)."}
InnerException: {"<releaseinfo xmlns=''> was not expected."}
异常:{“XML文档(1,2)中存在错误”。}
InnerException:{“不是预期的。”}
我遇到的错误似乎与名称空间有关,即使我的xml没有名称空间。正如图所示 假设您有一些类“Releaseinfo”,请在顶部添加以下属性:
[Serializable, XmlRoot("releaseinfo")]
public partial class Releaseinfo
{
...
}
详情如下:
此外:
- 问:你为什么反序列化两次?为什么不直接
返回(T)序列反序列化(sr)代码>?第一行只是“测试代码”吗
- 只是一个旁注:请尽可能使用文本(相对于屏幕截图)
releaseinfo
)和名称空间(可以通过xmlns=
或别名前缀)。它只是简单地告诉您本地名称和有效名称空间,以便您能够理解上下文。问题几乎可以肯定的是,这个名字是出乎意料的。是的,我使用“var test”行只是为了测试原始行为什么会中断。我认为这与我声明对象“T”的方式有关,但显然不是。感谢您将屏幕截图替换为错误文本。2.XmlRoot属性是否解决了问题?3.如果你觉得其中任何一个答案有帮助的话,一定要“向上投票”。看来这个错误与课堂无关。“反序列化”方法似乎有些问题。“(T)ser.Deserialize(sr);“不管我对类或对象做了什么,或者即使我没有指定一个对象,只是使用“var”,正如我的测试行所指出的那样,它都会在这里中断。你绝对会得到错误“不是预期的。”
如果你不使用[Serializable,XmlRoot()]
注释你的类。。。或同等产品。例如,可以在.xml文件中显式声明名称空间。但是添加[Serializable,XmlRoot()]
应该可以让您在这种特殊情况下克服这个特定问题。在这里查看更多XmlSerializer疑难解答提示:[Serializable]
在这里不需要XmlSerializer
根本不关心这个伪属性
[Serializable, XmlRoot("releaseinfo")]
public partial class Releaseinfo
{
...
}