Чтение XML файла как DataSet

Я не разбираюсь в синтаксическом анализе 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">
 </y></x></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">
 </point></point></point></point></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">
 </point></point></point></point></line>
 </lines>
 </graph>
</breezycalc>

Поскольку в этих строках может быть большое количество точек, мне нужно получить данные как можно быстрее и с минимальными ресурсами. Если есть более быстрый подход, чем DataSet, пожалуйста, просветите меня. В противном случае, может ли кто-нибудь показать мне, как я получаю данные своего графика с помощью DataSet в качестве моего синтаксического анализа XML?

2 ответа

Если вы хотите использовать 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, который читает строку за строкой. Но это немного сложнее. Вы можете увидеть его здесь: 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 должен быть упорядоченным.

Ссылка

licensed under cc by-sa 3.0 with attribution.