2013-01-19 35 views
7

XML dosyalarını ayrıştırma konusunda deneyimsizim ve çizgi grafik verilerini bir xml dosyasına kaydediyorum, bu yüzden biraz araştırma yaptım. this makalesine göre, bir XML dosyasını okumak için tüm yollardan, DataSet en hızlıdır. Ve önemli miktarda veri olabileceğinden, DataSet kullanıyorum. İşte benim grafik belgeler bakmak nasıl: Bu satırların noktaların çok sayıda olabilirXML dosyasını DataSet olarak okuyun

<?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> 

beri, çabuk ve mümkün olduğunca az kaynaklarla verileri almak gerekir. DataSet'dan daha hızlı bir yaklaşım varsa, lütfen beni aydınlatın. Aksi takdirde, birisi benim XML vericim olarak bir DataSet kullanarak grafik verilerimi nasıl alabilirim?

cevap

10

Bir DataSet kullanmak istiyorsanız, çok basittir.

// 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(); 
    } 
} 

Daha hızlı bir şey istiyorsanız, çizgiden sonra satırı okuyan XmlReader ile deneyebilirsiniz. Ama gelişmesi biraz daha zor. http://msdn.microsoft.com/library/cc189056(v=vs.95).aspx

+0

InferSchema sadece boş satırlarla ithal var ki önce bana yardımcı – user2648008

4

Diğer basit yöntem, "ReadXml" yerleşik yöntemini kullanıyor.

string filePath = "D:\\Self Practice\\Sol1\\Sol1\\Information.xml"; 
DataSet ds = new DataSet(); 
ds.ReadXml(filePath); 

Not: XML dosyası düzenli bir şekilde olmalıdır.

Reference

İlgili konular