Пишу программу чтения XML.
И вся задача-то -считать XML файл по узлам! А вот не выходит.
Пишу на C#.
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace ProbaApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string tag;
XmlTextReader reader = new XmlTextReader("out.xml");
reader.WhitespaceHandling = WhitespaceHandling.None; // пропускаем пустые узлы
while (reader.Read())
if (reader.NodeType==XmlNodeType.Element)
{
if (reader.Name == "Заказ")
{
tag = reader.ReadOuterXml();
MessageBox.Show(tag);
}
}
}
}
}
XML-файл:
<?xml version="1.0" encoding="windows-1251" ?>
<Заказы>
<Заказ Адрес="Уфа" Дата="21.04.2004">
<Товар Название="Товар_А" Цена="100" />
<Товар Название="Товар_Б" Цена="150" />
<Товар Название="Товар_В" Цена="370" />
</Заказ>
<Заказ Адрес="Москва" Дата="24.04.2004">
<Товар Название="Товар_Г" Цена="400" />
</Заказ>
<Заказ Адрес="Омск" Дата="28.04.2004">
<Товар Название="Товар_Д" Цена="255" />
</Заказ>
</Заказы>
Как ни странно цикл работает 3 раза (правильно), а выдает только "Уфа" и "Омск" - первый и последний узел!
В чем причина.
Может кто посоветует - как еще можно в цикле получить сразу целиком весь узел.
Что бы программа в данном случае работала 3 раза и каждый раз возвращала в цикле полностью весь узел?
Подкиньте примерчик - на любом языке (C#, VB, Delphi...) Лишь бы работало!
Строить DOM не получается из-за большого объема файла.
Заранее благодарю!