[英]How to serialize an included object/property as a root?
我有一个棘手的问题。 假设我有一个名为ObjectHost
的类,其中包含BusinessObject
类型的属性,该属性本身包含一些属性(例如,将Name
和Town
作为字符串)。 该代码将是:
public class ObjectHost
{
public BusinessObject Data { get; set; }
public ObjectHost()
{
Data = null;
}
public ObjectHost(BusinessObject ei)
{
Data = ei;
}
public override string ToString()
{
return (Data == null) ? "null" : Data.ToString();
}
}
序列化时,它将产生类似以下内容的内容:
<ObjectHost>
<Data>
<Name>My name</Name>
<Town>London</Town>
</Data>
</ObjectHost>
我希望在哪里:
<Name>My name</Name>
<Town>London</Town>
因为它只是我特定用途(出于某些其他目的)的封装对象。
我尝试使用XmlRoot
和XmlElement
属性,但没有实现我的目标。
有解决方案吗?
据我了解,您正在使用XmlSerializer序列化对象。
您正在传递ObjectHost,并且只希望发出ObjectHost.BusinessObject的属性。
您可以使用以下方法之一
对序列化数据进行后期处理->使用XPath查询获取所需数据
/ObjectHost/Data
自定义序列化过程:(这有点棘手)
a)实现IXmlSerializable
b)自定义ReadXml,WriteXml和GetSchema
在WriteXml中,使用XPath查询或其他Xml方法(以获取XmlNodes)并仅写入所需的属性。
这种方法将与特定的数据结构相关联,并且不能用于不兼容的数据结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.