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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск по xml файлу и вывод данных в textbox 
V
    Опции темы
kama3uk
Дата 30.7.2012, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть вот такой XML файлик
Код

<NewDataSet>
  <Table>
    <LCH>2</LCH>
    <CITY>Симферополь</CITY>
    <STREET>Хабаровская</STREET>
    <DOM>4</DOM>
  </Table>
<Table>
    <LCH>3</LCH>
    <CITY>Симферополь</CITY>
    <STREET>Хабаровская</STREET>
    <DOM>10</DOM>
  </Table>
</NewDataSet>


требуется сделать следующее: Пользователь вводит в текст-бокс номер ("LCH") после чего программка ищет данный номер и как только нашла выводит в три текст-бокса дальнейшую инфу(CITY,STREET,DOM).

вот код программки: 
Код

private void ReadXMLDocument()
        {
            string city, street, dom;  //теги в базе

            string filepath = "C:\\Sprav\\Baza.xml";   
         
            XmlDocument xd = new XmlDocument();
            FileStream fs = new FileStream(filepath, FileMode.Open);
            xd.Load(fs);
            XmlNodeList list = xd.GetElementsByTagName("Table");

            for (int i = 0; i < list.Count; i++)
            {
                XmlElement id = (XmlElement)xd.GetElementsByTagName("LCH")[i]; 
                XmlElement gor = (XmlElement)xd.GetElementsByTagName("CITY")[i]; 
                XmlElement ylica = (XmlElement)xd.GetElementsByTagName("STREET")[i]; 
                XmlElement Ndom = (XmlElement)xd.GetElementsByTagName("DOM")[i];

                string pid = textBox13.Text;    // Сюда вводится номер "LCH"     
                  
                if (id.GetAttribute("LCH") == pid)  //Если наткнулся на нужный тег
                {
                    //Вставляем переменные текст из тегов
                    city = gor.InnerText;
                    street = ylica.InnerText;
                    dom = Ndom.InnerText;

                    //заполняем поля на форме
                    textBox14.Text = city;
                    textBox2.Text = street;
                    textBox3.Text = dom;

                    break;
                }
                else
                {
                
                }
            }
            fs.Close();   
        }


Но он не работает.Проскакивает мимо 
Код

if (id.GetAttribute("LCH") == pid)  //Если наткнулся на нужный тег


Помогите разобратся!.

Это сообщение отредактировал(а) kama3uk - 30.7.2012, 13:45
PM MAIL   Вверх
Fortnox
Дата 30.7.2012, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

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



Проскакивает, потому что LCH не атрибут, а элемент. И нужно брать свойство InnerText
И лучше использовать XPath для выборки:
Код

var node = xd.SelectSingleNode("//Table[LCH = '2']"); // 2 - номер для поиска

            string city = node["CITY"].InnerText;
            string street = node["STREET"].InnerText;
            string dom = node["DOM"].InnerText;


Или модифицируйте ваш код, просто замените строчку 21 на:
Код

if (id.Name == "LCH" && id.InnerText == pid)


Это сообщение отредактировал(а) Fortnox - 30.7.2012, 16:30
PM MAIL   Вверх
kama3uk
Дата 31.7.2012, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



модифицируя строчку 
Код
 if (id.Name == "LCH" && id.InnerText == pid) 
 помогло.Спасибки за помощь!
PM MAIL   Вверх
IBS
Дата 9.8.2012, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я все-таки хочу порекомендовать использовать XElement XDocument вместо XmlElement XmlDocument - они устарели
Преимущества  XElement XDocument:
1) Простота построения XML-документа
2) Linq - синтаксис


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


Новичок



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

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



ну при построении так то да. А вот при поиске лучше использовать xpath. Он вроде как то быстрее соображает.Потомучто я эту прогу сделал но она очень медленно работает.XML файл вмещает в себя 159 тысяч строк.Щас вот пытаюсь с Xpath'ом разобратся

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

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


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

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


 




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


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

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