部分xml序列化/反序列化

是否可以从/串行部分(de)/序列化对象?

class Foo { Bar Bar{get;set;} string XmlJunkAsString{get;set;} } 

如此超级,我们希望下面的字符串能够工作……

  

最终我们可以找到Foo.XmlJunkAsString的内容来包含字符串

  

反之亦然,当序列化这个特定的Foo实例时,会产生上面的xml。

可能?

我希望[XmlText]可以工作,但它似乎逃脱了; 你可以实现IXmlSerializable ,但这非常棘手。 以下是丑陋的,但给出了正确的结果(尽管你可能会得到一些xml空白差异)

 using System; using System.ComponentModel; using System.Xml; using System.Xml.Serialization; public class Bar { } public class Foo { public Bar Bar { get; set; } [XmlIgnore] public string XmlJunkAsString { get; set; } [XmlElement("XmlJunkAsString"), Browsable(false)] [EditorBrowsable(EditorBrowsableState.Never)] public XmlElement XmlJunkAsStringSerialized { get { string xml = XmlJunkAsString; if (string.IsNullOrEmpty(xml)) return null; XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); return doc.DocumentElement; } set { XmlJunkAsString = value == null ? null : value.OuterXml; } } } static class Program { static void Main() { var obj = new Foo { Bar = new Bar(), XmlJunkAsString = "" }; var ser = new XmlSerializer(obj.GetType()); ser.Serialize(Console.Out, obj); } }