为什么apt-get
在使用XmlSerializer
反序列化空类型元素时使用XmlNode
数组填充我的对象属性,而不是像使用XmlNodeReader
时那样使用空字符串(还是StringReader
)?
以下代码示例中的第二个断言失败:
XmlTextReader
我猜它与null内部var doc = new XmlDocument();
doc.Load(new StringReader(@"
<Test xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<Value xsi:type=""xsd:string"" />
</Test>"));
var ser = new XmlSerializer(typeof (Test));
var reader1 = new StringReader(doc.InnerXml);
var obj1 = (Test) ser.Deserialize(reader1);
Debug.Assert(obj1.Value is string);
var reader2 = new XmlNodeReader(doc.FirstChild);
var obj2 = (Test) ser.Deserialize(reader2);
Debug.Assert(obj2.Value is string);
public class Test
{
public object Value { get; set; }
}
属性有关,但我不知道如何解决这个神秘的限制。如何可靠地反序列化我解析的XML文档的子集而不将其转换回字符串并重新解析?
答案 0 :(得分:1)
看起来这是一个非常古老的mouseUp:
错误Microsoft have no intention of fixing。 (存档的Microsoft Connect链接here)。我在Lev Gimelfarb的博客here上找到了一个解决方法,在查找前缀时,将名称空间添加到读者的XmlNodeReader
。
NameTable