Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение из xml 
V
    Опции темы
golfV
Дата 3.3.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



Доброго времени суток!

Появился такой вопросик. Есть xml файл.
Код

 <case>
    <id>1</id>
    <boardname>asdfg</boardname>
    <radiatorname>small</radiatorname>
    <lowlim>12,9</lowlim>
    <highlim>16</highlim>
  </case>
  <case>
    <id>2</id>
    <boardname>abcda</boardname>
    <radiatorname>big</radiatorname>
    <lowlim>2,2</lowlim>
    <highlim>2,8</highlim>
  </case>

как вывести из него в комбобокс все значения boardname? 
пробовал сделать так, но неполучается, подскажите как это сделать?
Код

ArrayList myAl = new ArrayList();
                   XmlTextReader reader = new XmlTextReader(sCurDir + @"\a.xml");
                   reader.WhitespaceHandling = WhitespaceHandling.None;

                   while (reader.Read())
                       if (reader.NodeType == XmlNodeType.Element)
                           if (reader.Name == "case")
                           {

                               comboBox2.Items.Add(reader.ReadElementString("boardname"));
                           }

PM MAIL   Вверх
golfV
Дата 3.3.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



уже разобрался=)
Код

ArrayList myAl = new ArrayList();
                   XmlTextReader reader = new XmlTextReader(sCurDir + @"\scale.xml");
                   reader.WhitespaceHandling = WhitespaceHandling.None;

                   while (reader.Read())
                       if (reader.NodeType == XmlNodeType.Element)
                           if (reader.Name == "boardname")
                           {
  
                               comboBox2.Items.Add(reader.ReadElementString("boardname"));
                           }


Это сообщение отредактировал(а) golfV - 3.3.2010, 11:34
PM MAIL   Вверх
mrbrooks
Дата 3.3.2010, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Код

using System.Xml;
using System.Xml.Linq;

        private void BtnTest_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "*.xml|*.xml";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                XElement elem = XElement.Load(dlg.FileName);
                foreach (XElement el in elem.Elements("case").Elements("boardname")) comboBox.Items.Add(el.Value);
            }
        }


PM MAIL   Вверх
golfV
Дата 3.3.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



Возник еще вопросик. как сделать чтоб когда я выбрал в комбобоксе "boardname" то ниже в текстбокс отобразилось бы значение "radiator name"?

[/code]
Код

<case>
  <case>
    <id>1</id>
    <boardname>asdfg</boardname>
    <radiatorname>small</radiatorname>
    <lowlim>12,9</lowlim>
    <highlim>16</highlim>
  </case>
  <case>
    <id>2</id>
    <boardname>abcda</boardname>
    <radiatorname>big</radiatorname>
    <lowlim>2,2</lowlim>
    <highlim>2,8</highlim>
  </case>




Это сообщение отредактировал(а) golfV - 3.3.2010, 11:37
PM MAIL   Вверх
ДобренькийПапаша
Дата 3.3.2010, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Так работает.
Код

class Program
    {
        static void Main(string[] args)
        {
            //ArrayList myAl = new ArrayList();
            XmlTextReader reader = new XmlTextReader("XmlTest.xml");
            reader.WhitespaceHandling = WhitespaceHandling.None;
            //reader.
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.Name == "boardname")
                    {
                        reader.Read();
                        Console.WriteLine("BoardName:{0}",reader.Value);
                    }
                }
            }
            Console.ReadLine();
        }
    }



--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
golfV
Дата 3.3.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



с этим разобрался, спасибо за советы, подскажите как сделать чтоб когда я выбрал в комбобоксе "boardname" то ниже в текстбокс отобразилось бы значение "radiator name"?
пробую так но неполучается
Код

 DataRow[] datarows = null;
                                   
  try
  {
      string rn = combobox2.Text;
      datarows = MyDatatable.Select("boardname=" + rn);
  }
  catch (Exception ex)
  {
      MessageBox.Show(ex.ToString());
  }
  if (datarows.Length > 0)
  {
   foreach (DataRow datarow in datarows)
   {
       textBox6.Text = datarow["radiatorname"].ToString();
    }
   
   }


Это сообщение отредактировал(а) golfV - 3.3.2010, 11:53
PM MAIL   Вверх
mrbrooks
Дата 4.3.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Код

        private void BtnTest_Click_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "*.xml|*.xml";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                XElement elem = XElement.Load(dlg.FileName);
                var res = elem.Elements("case")
                    .Select(f => new { first = f.Element("boardname").Value, second = f.Element("radiatorname").Value })
                    .ToList();
                comboBox.DataSource = res;
                comboBox.DisplayMember = "first";
                comboBox.SelectedIndexChanged += (obj, args) => textBox.AppendText(res[comboBox1.SelectedIndex].second);
            }
        }

PM MAIL   Вверх
golfV
Дата 4.3.2010, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: 1
Всего: 1



большое спасибо, теперь все работает
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1310 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.