2013-01-19 37 views
7

Tôi thiếu kinh nghiệm với phân tích tệp XML và tôi đang lưu dữ liệu biểu đồ đường vào tệp xml, vì vậy tôi đã nghiên cứu một chút. Theo bài viết this, trong số tất cả các cách để đọc tệp XML, DataSet là nhanh nhất. Và có nghĩa là tôi sử dụng DataSet vì có thể có một lượng dữ liệu đáng kể. Dưới đây là cách các tài liệu đồ thị của tôi trông như thế nào:Đọc tệp XML dưới dạng Số liệu

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

Vì có thể có nhiều điểm trong các dòng này, tôi cần lấy dữ liệu nhanh và ít tài nguyên nhất có thể. Nếu có cách tiếp cận nhanh hơn DataSet, vui lòng khai sáng cho tôi. Nếu không, ai đó có thể chỉ cho tôi cách tôi sẽ lấy dữ liệu biểu đồ của mình bằng cách sử dụng một phân tích cú pháp XML của tôi là DataSet?

Trả lời

10

Nếu bạn muốn sử dụng Số liệu, nó rất đơn giản.

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

Nếu bạn muốn điều gì đó nhanh hơn, bạn có thể thử với XmlReader đọc dòng sau. Nhưng khó phát triển hơn một chút. Bạn có thể xem tại đây: http://msdn.microsoft.com/library/cc189056(v=vs.95).aspx

+0

InferSchema đã giúp tôi trước khi được nhập với hàng trống – user2648008

4

Phương pháp đơn giản khác đang sử dụng phương pháp sẵn có "ReadXml".

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

Lưu ý: Tệp XML phải có trật tự.

Reference

Các vấn đề liên quan