簡體   English   中英

如何將包含的對象/屬性作為根序列化?

[英]How to serialize an included object/property as a root?

我有一個棘手的問題。 假設我有一個名為ObjectHost的類,其中包含BusinessObject類型的屬性,該屬性本身包含一些屬性(例如,將NameTown作為字符串)。 該代碼將是:

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>

因為它只是我特定用途(出於某些其他目的)的封裝對象。

我嘗試使用XmlRootXmlElement屬性,但沒有實現我的目標。

有解決方案嗎?

據我了解,您正在使用XmlSerializer序列化對象。

您正在傳遞ObjectHost,並且只希望發出ObjectHost.BusinessObject的屬性。

您可以使用以下方法之一

  1. 對序列化數據進行后期處理->使用XPath查詢獲取所需數據

     /ObjectHost/Data 
  2. 自定義序列化過程:(這有點棘手)
    a)實現IXmlSerializable
    b)自定義ReadXml,WriteXml和GetSchema

    在WriteXml中,使用XPath查詢或其他Xml方法(以獲取XmlNodes)並僅寫入所需的屬性。
    這種方法將與特定的數據結構相關聯,並且不能用於不兼容的數據結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM