直接反序列化到/从 XML Linq
Posted
技术标签:
【中文标题】直接反序列化到/从 XML Linq【英文标题】:De/Serialize directly To/From XML Linq 【发布时间】:2008-11-24 12:50:35 【问题描述】:有什么方法可以在不往返 XmlDocument/temp 字符串的情况下对对象进行反序列化/序列化?我正在寻找类似以下的内容:
class Program
static void Main(string[] args)
XDocument doc = new XDocument();
MyClass c = new MyClass();
c.SomeValue = "bar";
doc.Add(c);
Console.Write(doc.ToString());
Console.ReadLine();
[XmlRoot(ElementName="test")]
public class MyClass
[XmlElement(ElementName = "someValue")]
public string SomeValue get; set;
但是,当我这样做时出现错误(不能将非空白字符添加到内容中。)如果我将类包装在元素中,我会看到写入的内容是
我确实有自动反序列化/序列化的扩展方法,但这不是我想要的(这是客户端,但我仍然想要更优化的东西)。
有什么想法吗?
【问题讨论】:
【参考方案1】:类似this?
public XDocument Serialize<T>(T source)
XDocument target = new XDocument();
XmlSerializer s = new XmlSerializer(typeof(T));
System.Xml.XmlWriter writer = target.CreateWriter();
s.Serialize(writer, source);
writer.Close();
return target;
public void Test1()
MyClass c = new MyClass() SomeValue = "bar" ;
XDocument doc = Serialize<MyClass>(c);
Console.WriteLine(doc.ToString());
【讨论】:
以上是关于直接反序列化到/从 XML Linq的主要内容,如果未能解决你的问题,请参考以下文章
如何反序列化 System.Xml.Linq.XElement?
使用 Jackson 从 XML 到 POJO 的反序列化问题:没有从字符串值反序列化的字符串参数构造函数/工厂方法