我遇到了一个棘手的问题。假设我有一个名为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
属性,但我没有实现目标。
有解决方法吗?
答案 0 :(得分:0)
据我所知,您正在使用XmlSerializer来序列化对象。
您正在传递ObjectHost并且只想要发出ObjectHost.BusinessObject的属性。
您可以使用以下方法之一
序列化数据的后处理 - &gt;使用XPath查询来获取所需的数据
/ObjectHost/Data
自定义序列化过程:(这有点棘手)
a)实现IXmlSerializable
b)自定义ReadXml,WriteXml和GetSchema
在WriteXml中,使用XPath查询或其他Xml方法(获取XmlNodes)并只写入所需的属性。
这种方法将绑定到特定的数据结构,而不能用于不兼容的数据结构。