私はxmlを使用してデータを解析する方法に取り組んでいます。
与えられたファイルには、次のような行が含まれています。
George | Washington | Carver
または他の誰かが私にこのようなものを送ることができます
Carver | Washington | George
等々...
形式が何であれ、ファイルを送ってくれる人は誰でも、ファイルの解析方法に関するルールも送ってくれます。最初の例では、First Name | ミドルネーム | 苗字。2 番目の例では、姓 | です。ミドルネーム | ファーストネーム
それぞれの可能性について特別なケースを記述する代わりに、メタ データを記述する XML ファイルを作成しました。
<file>
<first>0</first>
<middle>1</middle>
<last>2</last>
</file>
たとえば、この場合。このタグは、名が 0 番目の位置にあることを示すことにfirst
対応しています。0
直感的に、キーをタグに設定し、値をテキストに設定して辞書を作成することを考えました。そんな...
public static IDictionary<string, string> GetLookupTable(string xmlContents)
{
XElement xmlElement = XElement.Parse(xmlContents);
IDictionary<string, string> table = new Dictionary<string, string>();
foreach (var element in xmlElement.Elements())
{
table.Add(element.Name.LocalName, element.Value);
}
return table;
}
しかし、私は .NET の実装にあまり詳しくないので、いくつか疑問に思ったことがあります。
XElement
辞書を作成するのではなく、トラバースする方がよいでしょうか?XElement
トラバーサルは、必要なものを取得するために順序付けられていないツリーのトラバーサルを伴う可能性があると信じているため、これは良い考えではないと思います。各プロパティ (私は 3 つ以上あります) に対してこれを行うのは非常に非効率的です。私はここで推測しているだけです...dictionary
一定時間からの取得ですか?HashMap
Javaでは一定の get があることを私は知っています。C# の場合も同様である場合は、1 回トラバースするだけで、一定の時間内に必要なものを取得できるため、これはより良いルートのように思えます。