是否可以将对象部分(de)/序列化为字符串?
class Foo
{
Bar Bar{get;set;}
string XmlJunkAsString{get;set;}
}
所以最终,我们希望下面的字符串能够工作......
<Foo><Bar></Bar><XmlJunkAsString><xml><that/><will/><not/><be/><parsed/></xml></XmlJunkAsString></Foo>
最终我们可以找到 Foo.XmlJunkAsString 的内容来包含该字符串
<xml><that/><will/><not/><be/><parsed/></xml>
反之亦然,当序列化 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 = "<xml><that/><will/><not/><be/><parsed/></xml>"
};
var ser = new XmlSerializer(obj.GetType());
ser.Serialize(Console.Out, obj);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)