As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center作为指导。
6年前关闭。
我有一个普通的旧XML文件。通过一些
现在的事情是:我不在乎名称空间或XML中的任何其他内容。我只希望反序列化可以与“简单的单线”一起使用。我计划在生活中解析很多XML,并且我对花时间处理a肿的格式(对于我们都不知道的细节)不感兴趣。
因此,我正在寻找一种用于.Net的XML反序列化程序,该程序可以消除绒毛,仅看到一个
在哪里可以找到像我描述的那样易于使用的XML反序列化器?
我确实知道这限制了我的XML阅读能力。
请注意,如果您使用的是Windows服务,则序列化中会出现内存泄漏:http://dotnetcodebox.blogspot.fr/2013/01/xmlserializer-class-may-result-in.html
为避免这种情况,建议您使用一种方法来替换上面代码的
6年前关闭。
我有一个普通的旧XML文件。通过一些
XSD.EXE
魔术,我制作了一个模型。现在,我想将XML数据读入模型。通常,这只是XmlSerializer.Deserialize
,但它总是抱怨名称空间之类的东西。现在的事情是:我不在乎名称空间或XML中的任何其他内容。我只希望反序列化可以与“简单的单线”一起使用。我计划在生活中解析很多XML,并且我对花时间处理a肿的格式(对于我们都不知道的细节)不感兴趣。
因此,我正在寻找一种用于.Net的XML反序列化程序,该程序可以消除绒毛,仅看到一个
<obj> <Name> ...
并将其数据放入public string Name { get; set; }
中即可。它应该不比例如MyObj myObj = SimpleXml.Deserialize<MyObj>(xmlString);
困难。就像JSON反序列化器一样工作。在哪里可以找到像我描述的那样易于使用的XML反序列化器?
我确实知道这限制了我的XML阅读能力。
最佳答案
我正在为UI客户端使用此类帮助程序。
public string Serialize<T>(T o)
{
var x = new XDocument();
using(var w = x.CreateWriter())
new XmlSerializer(typeof(T)).Serialize(w, o);
return x.ToString();
}
public T Deserialize<T>(string s)
{
return
(T)new XmlSerializer(typeof(T))
.Deserialize(XDocument.Parse(s)
.CreateReader());
}
请注意,如果您使用的是Windows服务,则序列化中会出现内存泄漏:http://dotnetcodebox.blogspot.fr/2013/01/xmlserializer-class-may-result-in.html
为避免这种情况,建议您使用一种方法来替换上面代码的
new XmlSerializer
,该方法可以从缓存(例如Dictionary)中创建/检索XmlSerializers,如博客文章中所述。