Чтение большого файла XML - PullRequest
       29

Чтение большого файла XML

1 голос
/ 24 января 2012

У меня есть много xml-файлов со следующей структурой

<main.....>
 <raw...>
  <A>field 1</A>
  <B>field 2</B>
  ....
  <interval>
   <type>data</type>
   <type>data</type>
  </interval>
  <interval>
   <type>data</type>
   <type>data</type>
  </interval>
  <interval2>
   <acel>data i need</acel>
   <decel>data i need</decel>
   <left>data i need</left>
   <right>data i need</right>
   <range>tsw</range>
  </interval2>
  <interval2>
   <acel>data i need</acel>
   <decel>data i need</decel>
   <left>data i need</left>
   <right>data i need</right>
   <range>xyz</range>
  </interval2>
 </raw>
 ...
 </raw>
 <raw>
 ...
 </raw>
</main>

Мне нужны данные от A и interval2 детей acel, decel, lef, право для каждого необработанного узла в main, я не знаюмного о XML.Я добрался до того места, где я получаю А за каждое сырье, но не дальше.

Ответы [ 2 ]

1 голос
/ 24 января 2012

Самый простой способ в C # - если вы используете .NET 3.5 или выше - это использовать LINQ to XML:

XDocument doc = XDocument.Load("file.xml");
var query = doc.Descendants("raw")
               .Select(raw => new {
                           A = (string) raw.Element("A"),
                           Interval2 = raw.Element("interval2")
                                          .Elements("type2")
                                          .Select(type2 => (string) type2)
                                          .ToList()
                       });

foreach (var item in query)
{
    Console.WriteLine("A: {0}", item.A);
    Console.WriteLine("Interval2 values:");
    foreach (var x in item.Interval2)
    {
        Console.WriteLine("  {0}", x);
    }
}

Конечно, это всего лишь один из способов запроса - трудно дать более конкретный ответ без дополнительной информации о том, что вы пытаетесь сделать.

0 голосов
/ 24 января 2012

Самый простой способ - использовать XmlDocument.Однако это считывает весь файл в память, поэтому не подходит для файлов очень большого размера.

...