<ndActivityLog repositoryId="AA-AAAA1AAA" repositoryName="Company Name" startDate="2013-07-05" endDate="2013-07-06">
<activity date="2013-07-05T06:42:35" name="open" host="00.00.00.00">
<user id="joebloggs@email.com" name="Joe Bloggs" memberType="I" />
<storageObject docId="0000-0000-0000" name="Opinion" size="356864" fileExtension="doc">
<cabinet name="Client and Matters">NG-5MIYABBV</cabinet>
<DocumentType>Legal Document</DocumentType>
<Author>Joe Bloggs</Author>
<Matter>1001</Matter>
<Client>R1234</Client>
</storageObject>
</activity>
</ndActivityLog>
これは XML の例です。ドキュメント内には約 4000 の「アクティビティ」要素があり、さまざまなレベルのコンテンツがあります。「Client」要素と「Matter」要素を持つものと、持たないものがあります。表のように考えると、これらは空白のセルになりますが、列ヘッダーはまだそこにあります。
基本的に、これを解析して SQL データベースにし、データ構造を維持する必要があります。これに加えて、特定の例に要素が存在しない場合は、その事実を参照して「空白セル」として残す必要があります。
var doc = XDocument.Load(path + "\\" + file + ".xml");
var root = doc.Root;
foreach (XElement el in root.Elements())
{
// Console.WriteLine(el.Nodes());
// Console.WriteLine(el.Value);
//Console.WriteLine(" Attributes:");
foreach (XAttribute attr in el.Attributes())
{
Console.WriteLine(attr);
// Console.WriteLine(el.Elements("id"));
}
Console.WriteLine("---------------------------");
// foreach (XElement element in el.Elements())
// {
// Console.WriteLine(" {0}: {1}", element.Name, element.Value);
// }
}
//hold console open
Console.ReadLine();
}
ここまでのコード。出力を以下に示します
date="2013-07-06T17:07:42"
name="open"
host="213.146.142.50
基本的に、すべての情報を抽出する必要があるため、それらを基本的にテーブル レイアウトに格納できます。私は XML 解析の使用にかなり慣れていないので、助けていただければ幸いです。