【发布时间】:2014-10-23 09:46:08
【问题描述】:
是否可以反序列化以下 XML:
<MyObject><Test>Hi hello</Test><Something><Else><With><SubItems count='5'>hello world</SubItems></With></Else></Something></MyObject>
进入这个对象:
public class MyObject {
public string Test { get; set; }
public string Something { get; set; }
}
这是预期的输出(目前失败,XmlException: Unexpected node type Element. ReadElementString method can only be called on elements with simple or empty content. Line 1, position 50.)
[TestMethod]
public void TestDeserialization()
{
var s = "<MyObject><Test>Hi hello</Test><Something><Else><With><SubItems count='5'>hello world</SubItems></With></Else></Something></MyObject>";
var o = s.DeSerialize<MyObject>();
Assert.AreEqual("Hi hello", o.Test);
Assert.AreEqual("<Else><With><SubItems count='5'>hello world</SubItems></With></Else>", o.Something);
}
public static class Xml
{
public static T DeSerialize<T>(this string xml) where T : new()
{
if (String.IsNullOrEmpty(xml))
{
return new T();
}
var xmlSer = new XmlSerializer(typeof(T));
using (var stream = new StringReader(xml))
return (T)xmlSer.Deserialize(stream);
}
}
【问题讨论】:
-
是的,有可能。你说你的代码失败了——为什么?您也没有显示
DeSerialize的代码,所以我们怎么能提供帮助?
标签: c# xml deserialization