我有这种情况:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public class Response
{
public string RetKey { get; set; }
public string RetType { get; set; }
}
[Test]
public void Test3()
{
{
var s = @"<Response CommandID=""57b48ae28f484ab4b3cc2e841cddd02a"">
<RetKey>5</RetKey>
<RetType>152</RetType>
</Response>";
var xmlSerializer = new XmlSerializer(typeof(Response));
var deserialize = (Response)xmlSerializer.Deserialize(new StringReader(s));
Assert.AreEqual("5", deserialize.RetKey, "no namespace");
}
{
var s = @"<Response xmlns=""http://www.sap.com/SBO/DIS"" CommandID=""57b48ae28f484ab4b3cc2e841cddd02a"">
<RetKey>5</RetKey>
<RetType>152</RetType>
</Response>";
var xRoot = new XmlRootAttribute
{
ElementName = typeof(Response).Name,
Namespace = "http://www.sap.com/SBO/DIS",
IsNullable = true
};
var xmlSerializer = new XmlSerializer(typeof(Response), xRoot);
var deserialize = (Response)xmlSerializer.Deserialize(new StringReader(s));
Assert.AreEqual("5", deserialize.RetKey, "try to declare namespaces");
}
}
第二次尝试失败(使用命名空间)。所以我坚持在 xml 反序列化中正确使用命名空间。让我感到困惑的是,反序列化过程没有错误,但返回空对象。
我错过了什么?