0

難しい問題があります。ObjectHostタイプ のプロパティを含むという名前のクラスがありBusinessObject、それ自体にいくつかのプロパティが含まれているとしましょう (文字列として aNameと a としましょう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たが、目標を達成できませんでした。

これに対する解決策はありますか?

4

1 に答える 1

0

私が理解したように、オブジェクトをシリアル化するためにXmlSerializerを使用しています。

ObjectHostを渡し、ObjectHost.BusinessObjectのプロパティのみを発行する必要があります。

次のいずれかのアプローチを使用できます

  1. シリアル化されたデータの後処理->XPathクエリを使用して目的のデータを取得します

    /ObjectHost/Data
    
  2. シリアル化プロセスのカスタマイズ:(これは少し注意が必要です)a)
    IXmlSerializableを実装します
    b)ReadXml、WriteXml、およびGetSchemaをカスタマイズします

    WriteXmlで、XPathクエリまたは他のXmlメソッド(XmlNodesを取得するため)を使用して、必要なプロパティのみを書き込みます。
    このアプローチは特定のデータ構造に関連付けられ、互換性のないデータ構造には使用できません。

于 2012-05-23T15:49:13.827 に答える