LINQ と Generics を使用して複数の XML ファイルを保存/読み取るクラスを作成しようとしています。
複数のタイプの XML ファイル (つまり、その中のデータ) を保存する一般的な方法を探しています。
すべての XML ファイルの形式は次のとおりです。
<ROOT>
<!-- First Element/First Row -->
<NODE>
<COL1>Some value</COL1>
.....
<COLn>Some value</COLn>
</NODE>
.........
<!-- Nth Element = nth row -->
<NODE>
<COL1>Some value</COL1>
.....
<COLn>Some value</COLn>
</NODE>
</ROOT>
すべてのファイルには、異なる ROOT、NODE、および COLx があります。列数とその中のデータは、Multi-Dim 配列の入力によって異なります。この入力配列は、xml 内の NODES タグの数 (配列内の要素) も提供します。
XML ファイルを保存するメソッドは次のようになります。
public void SaveFirstXmlFile()
{
XElement xdoc = new XElement("ThisDocsRoot");
//Iterate for number of rows(elements of data)
for (int nodes= 1; nodes<= NUMBER_OF_NODES; nodes++)
{
xdoc.Add(new XElement(row,
new XElement("Col 1", "Some Value"),
new XElement("Col 2", "Some Value"),
new XElement("Col 3", "Some Value")
));
}
xdoc.Save("/Path/To/XML/File");
}
複数の XML ファイルで機能するようにこのメソッドを微調整したかったのですが、それが正しい方法かどうかはわかりませんが、XML ファイルのルート、ノード、列、およびパスを定義するクラスを作成することにしました。データは、他のクラスによって作成された Multi-Dim Array から取得されます。
private class AClassforSomeXMLFile
{
private readonly String _root;
private readonly String _row;
private readonly String[] _columns;
private readonly String _exportPath;
public UsageData()
{
_exportPath = string.Format(@"{0}\xyz.xml",Path.GetDirectoryName(Application.ExecutablePath));
_root = "ROOT";
_row = "NODE";
_columns = new string[]
{
"COL1","COL2", "COL3","COL4",
};
}
public string ROOT { get { return _root; } }
public string ROW { get { return _row; } }
public string[] COLS { get { return _columns; }}
public string EPATH { get { return _exportPath; }}
}