0

私は、Linq to XML を使用して XML パーサーで作業し、foreach ループを介して解析しています。

プログラムは動作しますが、内部に多くの要素を持つ 2 つのルートがあり、これら 2 つのルートの要素が関連している可能性があるため、処理が遅くなります。(ファイルは大きくなく、1Mb から 5Mb です)。

明確にするために、.xml ファイル内に<Datas>とroots があります。<Symbols>内の要素は、次のように、それぞれの子を介し<Symbols>て要素に関連付けられています。<Datas><Symbol><Type>

<Datas>
     <Data>
        <Name>**SymbolType_1**</Name> // (As you can see, <Name> = <Type> of the <Symbol>)
        <Type>DataType1</Type>
            <Subitem>
                <Name>SubitemName1</Name>
                <Type>SubitemType1</Type>
            </Subitem>
            <Subitem>
                <Name>SubitemName1</Name>
                <Type>SubitemType1</Type>
            </Subitem>
     </Data>
     <Data>
        <Name>**SymbolType_2**</Name>
            <Subitem>
                <Name>SubitemName1</Name>
                <Type>SubitemType1</Type>
            </Subitem>
            <Subitem>
                <Name>SubitemName1</Name>
                <Type>SubitemType1</Type>
            </Subitem>
     </Data>
     [...]
</Datas>

<Symbols>
     <Symbol>
         <Name>SymbolName_1</Name>
         <Type>**SymbolType_1**</Type>
     </Symbol>
     <Symbol>
         <Name>SymbolName_1</Name>
         <Type>**SymbolType_1**</Type>
     </Symbol>
     [...]
</Symbols>

したがって、一部<Subitem> <Type>が別の に接続され<Data>、10 個の要素の構造を作成することも可能です。

私が今やっていることは、 each をforeach取得するループを使用し、<Symbol>メソッドを適用して each と<Data>それぞれ<Subitem>の子を調べることです。

私は C# から始めているので、ファイルではなくリストを解析して、 all<Symbol>と2 つまたは 3 つの異なる<Data>を保存するのが良い考えかどうかを知りたいです。<Subitem><List>

<Symbols>また、 「領域」を分割し、複数の foreach ループを同時に使用してそれぞれを解析することは賢明でしょうか (そして可能でしょうか) 。

最後に、各の位置を保存できるかどうかを知りたい<Data>ので、ルートの開始から解析する必要はありません<Datas>

どうもありがとうございました。

4

1 に答える 1

1

各項目を格納するには、おそらく Dictionary を使用する必要があります。すなわち

var symbols = new Dictionary<string, Symbol>();
var datas = new Dictionary<string, Data>();

起動時にそれらをロードします。リストを使用すると、(潜在的に) 正しいアイテムを見つけるためにコレクション全体を調べなければならないことを意味します。辞書を使用すると、キーで直接アクセスできます。

于 2013-11-14T14:07:39.447 に答える