1

私は次のxmlを持っています:

<state>
<groups>
    <group id='1' name='Basic Search Options'>
        <control name='Building' label='In' display='true' configurable='false'/>
        <control name='SearchType' label='For' display='true' configurable='false'/>
        <control id='1' default='C' name='Search By' label='By'>
            <option searchtype='C' searchmode='Cnumber' value='CNumber' label='C Number' display='true'/>
            <option searchtype='C' searchmode='crossrefnumber' value='CNumber1' label='Cross Reference Number' display='true'/>
            <option searchtype='P' searchmode=''  value='CaseNumber' label='P Name' display='true'/>
            <option searchtype='P' searchmode='' value='CaseNumber' label='A Name' display='false'/>
        </control>
    </group>
    <group id='2' name='Advanced Search Options'>
        <control name='Ctatus' label='C Status' display='true'/>
        <control name='DateFiled' label='Date Filed' display='true'/>
    </group>
</groups>

これを次のオブジェクトに逆シリアル化するにはどうすればよいですか?xmlに次のタグ「ArrayofGroup」を付けたくありません。代わりに、xmlに上記のようなカスタムタグを付ける必要があります。

public class GroupOfControls
{
public int instanceId { get; set; }
public int GroupId { get; set; }
public string Name { get; set; }
public List<SearchControl> Group { get; set; }
}

public class SearchControl
{
public string Name { get; set; }
public string Label { get; set; }
public bool Display { get; set; }
public string Default { get; set; }
public List<SearchOption> SearchOptions { get; set; }
}

public class SearchOption
{
public string Value { get; set; }
public string Label { get; set; }
public bool Display { get; set; }
public string SearchMode { get; set; }
public string SearchType { get; set; }
}
}
4

1 に答える 1

3

XSD ファイルがない場合は、XML から作成する必要があります。次のコマンドを使用して、Visual Studio コマンド ラインでこれを行うことができます。

xsd myfilename.xml

XSD ファイルがあれば、これは簡単です。

私は Visual Studio 2010 (C#/.Net 4) を使用しており、次のようにします。

まず、Visual Studio で新しいソリューションを作成します。

新しい計画

次に、ソリューションを右クリックし、XSD を選択して参照することにより、XSD ファイルをプロジェクトにインポートする必要がありますAdd => Existing Item

プロジェクト内に XSD を配置したら、Visual Studio コマンド プロンプトを起動する必要があります。使用cdしてプロジェクト ディレクトリに移動し、次のコマンドを入力します。

xsd myFilename.xsd /classes

これにより、XML を逆シリアル化する C# クラスが生成されます。ダイアログを使用して、Add Existing Itemこの新しいクラスをソリューションにインポートします。

次に、using ステートメントにusing System.Xml.Serialization;andを追加します。using System.IO;次に、次のコードを使用して XML をオブジェクトに逆シリアル化します (XML が XSD に対して検証されると仮定します)。ResponseData以下に示すように、ファイルできる最新の XSD を呼び出しました。

ソリューションエクスプローラー

これを念頭に置いて、私の C# コードは以下のとおりです。

using System;
using System.IO;
using System.Xml.Serialization;

namespace XML_Deserialization
{
    class Program
    {
        static void Main(string[] args)
        {
            ResponseData myResponseData = new ResponseData();

            XmlSerializer mySerializer = new XmlSerializer(typeof(ResponseData));
            StreamReader myStreamReader = new StreamReader(@"C:\Users\JMK\Documents\Visual Studio 2010\Projects\scratch\XML Deserialization\XML Deserialization\text.xml");
            myResponseData = (ResponseData)mySerializer.Deserialize(myStreamReader);

            Console.ReadLine();
        }
    }
}
于 2012-07-09T15:52:18.380 に答える