Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1

XML, Свойство HasChildNodes всегда возвращает true

22.05.2018, 14:31. Показов 2275. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите разобраться с XML
есть простой файл XML:

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<Страна Название_страны="Россия" Население="146 млн.">
  <Область Название_области="Московская">
    <Район Название_района="Каширский">
      <Город>Кашира1</Город>
      <Город>Кашира2</Город>
    </Район>
    <Район Название_района="Домодедовский">
      <Город>Домодедово1</Город>
      <Город>Домодедово2</Город>
    </Район>
  </Область>
</Страна>
</Страна>


в программе такой код:

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button1_Click(object sender, EventArgs e)
        {
            string pathToXml;
            pathToXml = @"C:\Prelogs\ПРОГРАММИРОВАНИЕ\С Sharp\КОД\ПРОЕКТЫ\16-замена в XML значений узлов\myxml_1 (обл).xml";
           
            XmlDocument doc = new XmlDocument();
            doc.Load(pathToXml);
            XmlNode xRoot = doc.DocumentElement;
            XmlNodeList childnodes = xRoot.SelectNodes("//*"); // выбор узлов с именем "Область"
 
            foreach (XmlNode node in childnodes)
            {
                textBox1.AppendText("<"+node.Name+">"+  ";   "+ node.HasChildNodes.ToString() + ";    " + node.Value + ";   " + node.InnerText + Environment.NewLine);
            }
        }


В textBox выдается такой результат:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
<Страна>;   True;    ;   Кашира1Кашира2Домодедово1Домодедово2
<Область>;   True;    ;   Кашира1Кашира2Домодедово1Домодедово2
<Район>;   True;    ;   Кашира1Кашира2
<Город>;   True;    ;   Кашира1
<Город>;   True;    ;   Кашира2
<Район>;   True;    ;   Домодедово1Домодедово2
<Город>;   True;    ;   Домодедово1
<Город>;   True;    ;   Домодедово2


Далее вопросы:
1.Почему node.HasChildNodes везде выдает true? Ведь у узлов <Город> нет дочерних узлов.
2.Почему node.Value везде выдает пустое значение. Ведь в узлах <Город> есть значения и это свойство должно его отображать.

во вложении проект и xml.
Вложения
Тип файла: 7z MyExp.7z (26.9 Кб, 1 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2018, 14:31
Ответы с готовыми решениями:

Свойство Console.IsOutputRedirected всегда возвращает false
Здравствуйте! Подскажите, пожалуйста, почему свойство Console.IsOutputRedirected всегда выводит false, в данном примере? using...

Backgroundworker.IsBusy всегда true
В общем, есть метод, который должен делать дела, ждать секунду и продолжать делать дела. В нем я вызываю BackgroundWorker, в котором жду...

Httpwebresponse.Statuscode всегда возвращает ОК
Всем добрый день. Пытаюсь получить значение свойства statuscode от ответа на запрос, при ошибке 404 - NOT FOUND с сервера. Проверяю это...

4
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18244 / 14158 / 5366
Регистрация: 17.03.2014
Сообщений: 28,847
Записей в блоге: 1
22.05.2018, 15:00
Цитата Сообщение от sysrepos Посмотреть сообщение
1.Почему node.HasChildNodes везде выдает true? Ведь у узлов <Город> нет дочерних узлов.
Потому что у <Городов>-ов есть один дочерний узел типа Text. В этом легко можно было убедиться с помощью отладчика.

Цитата Сообщение от sysrepos Посмотреть сообщение
2.Почему node.Value везде выдает пустое значение. Ведь в узлах <Город> есть значения и это свойство должно его отображать.
Не должно. В документации по XmlNode.Value ясно указано что для узлов типа Element свойство Value возвращает null.
1
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
22.05.2018, 15:19  [ТС]
ясно, спасибо за разъяснения.
Подскажите, как получить все узлы типа
XML
1
<Город>Кашира1</Город>
То есть типа как конечные узлы, в которых содержится какое то значение? (я уже второй день не могу сообразить, подскажите пожалуйста)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18244 / 14158 / 5366
Регистрация: 17.03.2014
Сообщений: 28,847
Записей в блоге: 1
22.05.2018, 15:32
Лучший ответ Сообщение было отмечено sysrepos как решение

Решение

sysrepos, можно с помощью xpath //*[text()]. Подставь это в вызов SelectNodes и читай текст с помощью InnerText
1
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
22.05.2018, 15:38  [ТС]
спасибо, то что нужно, выручили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2018, 15:38
Помогаю со студенческими работами здесь

Функция возвращает только true
Пытаюсь написать функцию для проверки числа на простоту, но она возвращает значение true при любом параметре. Что не так? bool prime (int...

waveOutGetVolume() всегда возвращает 4294967295 (максимальное значение)
Помогите пожалуйста, почему эта функция постоянно возвращает одно и то же значение несмотря на то, что громкость системы я выставлял...

Random не всегда возвращает нужное количество символов
Добрый день! Есть такой рандом. buffer должен возвращать 24 символа HEX. Вопрос: почему зачастую он возвращает 23? Спасибо! static...

Как програмным путем поменять свойство Button: Visible с True на False?
Здраствуйте подскажите плиз как с програмным путем поменять свойство Button: Visible с True на False с помощю пароля! чтоби после ввода...

Directory.Exists возвращает true при отсутствии директории
if (!Directory.Exists(Application.UserAppDataPath)) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru