Ler o ficheiro XML como conjunto de dados

sou inexperiente com o processamento de ficheiros XML, e estou a guardar dados de grafos de linha para um ficheiro xml, por isso fiz um pouco de pesquisa. De acordo com este artigo, de todas as formas de ler um ficheiro XML, DataSet é o mais rápido. E faz sentido que eu use DataSet uma vez que pode haver uma quantidade significativa de dados. Aqui está como Meus Documentos gráficos parecem:

<?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>
Uma vez que pode haver um grande número de pontos nestas linhas, preciso de obter os dados tão rapidamente e com tão pouco tempo. recursos o mais possível. Se houver uma aproximação mais rápida do que DataSet, por favor, esclareça-me. Caso contrário, alguém poderia me mostrar como eu obter meus dados de grafo usando um DataSet Como meu analisador XML?

Author: Brandon Miller, 2013-01-19

2 answers

Se quiser usar um conjunto de dados, é muito simples.

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

Se quiser algo mais rápido, pode tentar com o XmlReader que lê linha após linha. Mas é um pouco mais difícil de desenvolver. Você pode vê-lo aqui : http://msdn.microsoft.com/library/cc189056(v=vs. 95).aspx

 13
Author: jbouny, 2013-01-19 11:26:20

Outro método simples é usar o método" ReadXml " inbuilt.

string filePath = "D:\\Self Practice\\Sol1\\Sol1\\Information.xml";
DataSet ds = new DataSet();
ds.ReadXml(filePath);
Nota: O ficheiro XML deve ser ordenado.

Referência

 5
Author: Rock star, 2015-06-29 11:06:45