部分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); } }