私はXMLファイルの解析に不慣れで、折れ線グラフデータをxmlファイルに保存しているので、少し調査しました。 this の記事によると、XMLファイルを読み取る方法の中で、DataSet
が最速です。そして、大量のデータが存在する可能性があるため、DataSet
を使用することは理にかなっています。これが私のグラフドキュメントがどのように見えるかです:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<BreezyCalc>
<Graph Version="3.0" Mode="static">
<Range>
<X Min="-20" Max="20" />
<Y Min="-20" Max="20" />
</Range>
<Lines>
<Line Name="MyLine1" R="0" G="255" B="0">
<Point X="-17" Y="9" />
<Point X="7" Y="-5" />
<Point X="10" Y="4" />
<Point X="-6" Y="2" />
</Line>
<Line Name="MyLine2" R="255" G="0" B="0">
<Point X="-7" Y="3" />
<Point X="8" Y="-1" />
<Point X="-4" Y="-4" />
<Point X="-1" Y="6" />
</Line>
</Lines>
</Graph>
</BreezyCalc>
これらの線には多数のポイントが含まれる可能性があるため、できるだけ少ないリソースでデータをすばやく取得する必要があります。 DataSet
よりも速いアプローチがある場合は、教えてください。それ以外の場合、誰かがDataSet
をXMLパーサーとして使用してグラフデータを取得する方法を教えてもらえますか?
DataSetを使用する場合、それは非常に簡単です。
// Here your xml file
string xmlFile = "Data.xml";
DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlFile, XmlReadMode.InferSchema);
// Then display informations to test
foreach (DataTable table in dataSet.Tables)
{
Console.WriteLine(table);
for (int i = 0; i < table.Columns.Count; ++i)
Console.Write("\t" + table.Columns[i].ColumnName.Substring(0, Math.Min(6, table.Columns[i].ColumnName.Length)));
Console.WriteLine();
foreach (var row in table.AsEnumerable())
{
for (int i = 0; i < table.Columns.Count; ++i)
{
Console.Write("\t" + row[i]);
}
Console.WriteLine();
}
}
もっと速くしたい場合は、XmlReaderを使用して、1行ずつ読み取ることができます。しかし、開発するのは少し難しいです。あなたはそれをここで見ることができます: http://msdn.Microsoft.com/library/cc189056(v = vs.95).aspx
その他の簡単な方法は、「ReadXml」組み込みメソッドを使用することです。
string filePath = "D:\\Self Practice\\Sol1\\Sol1\\Information.xml";
DataSet ds = new DataSet();
ds.ReadXml(filePath);
注:XMLファイルは整然とした方法である必要があります。