[英]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.