Считывание данных с XML файла - C#
Формулировка задачи:
Необходимо считать с XML файла данные.
Под каждой Plane идут координаты x,y,z нужно по очереди их записывать в переменные x,y,z. После окончания Plane переходить на следующий Plane и считывать далее.
Я написал как просто ходить по тегу Plane и считывать первые три координаты, а как сделать так чтобы после каждого Plane считывались по очереди все координаты не знаю. Подскажите пожалуйста. Кстати координаты могут быть с плавающей точкой. Их может быть очень много может быть мало, и Plane тоже может быть разное количество.
<file> <Plane number="1"> <x>805</x> <y>745</y> <z>1</z> <x>806</x> <y>744</y> <z>1</z> <x>806</x> <y>743</y> <z>1</z> <x>806</x> <y>742</y> <z>1</z> <x>806</x> <y>741</y> <z>1</z> </Plane> <Plane number="2"> <x>805</x> <y>745</y> <z>6</z> <x>806</x> <y>744</y> <z>6</z> <x>806</x> <y>743</y> <z>6</z> <x>806</x> <y>742</y> <z>6</z> <x>806</x> <y>741</y> <z>6</z> </Plane> </file>
XmlTextReader reader = new XmlTextReader(@"C:\\1111.xml");
while (true)
{
reader.ReadToFollowing("Plane");
reader.MoveToFirstAttribute();
// while (reader.ReadToFollowing == "Plane") {
reader.ReadToFollowing("x");
reader.ReadElementContentAsString();
reader.ReadToFollowing("y");
reader.ReadElementContentAsString();
reader.ReadToFollowing("z");
reader.ReadElementContentAsString();
//}
}Решение задачи: «Считывание данных с XML файла»
textual
Листинг программы
class Program
{
public static void Main()
{
var xml = "C:\\1111.xml";
XmlSerializer serializer = new XmlSerializer(typeof(File));
using (Stream reader = new FileStream(xml, FileMode.Open))
{
var result = serializer.Deserialize(reader) as File;
}
Console.ReadKey();
}
}
[XmlRoot(ElementName = "Plane")]
public class Plane
{
[XmlElement(ElementName = "x")]
public List<string> X { get; set; }
[XmlElement(ElementName = "y")]
public List<string> Y { get; set; }
[XmlElement(ElementName = "z")]
public List<string> Z { get; set; }
[XmlAttribute(AttributeName = "number")]
public string Number { get; set; }
}
[XmlRoot(ElementName = "file")]
public class File
{
[XmlElement(ElementName = "Plane")]
public List<Plane> Planes { get; set; }
}