Author Topic: Знатоки C# и XML ответьте  (Read 3536 times)

0 Members and 1 Guest are viewing this topic.

Offline roman

  • Newbie
  • *
  • Posts: 33
  • Karma: +0/-0
Знатоки C# и XML ответьте
« on: March 22, 2007, 12:42:08 »
Пишу программу чтения 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 не получается из-за большого объема файла.

Заранее благодарю!