Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 13
Delphi 6-7

Компонент XMLDocument

10.07.2018, 06:52. Показов 7245. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот есть xml документ:
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<kool>
<tef 1="345" 2="678"/>
<def 3="689" 4="356"/>
<pef 5="842" 6="983"/>
<sef 7="967" 8="237"/>
</kool>
Мне надо вывести значение: def, но у меня ошибка Undeclared identifier: "VarToStr"
Delphi
1
2
3
4
XMLDocument.LoadFromFile('C:/test.xml');
XMLDocument.Active:=True;
Edit1.Text:= VarToStr(XMLDocument.DocumentElement.ChildNodes['kool'].Attributes['def']);
XMLDocument.Active:=False;
Что делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2018, 06:52
Ответы с готовыми решениями:

Компонент XMLDocument
Имеется XML-документ следующего содержания: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;response list=&quot;true&quot;&gt; &lt;user&gt; ...

XMLDocument
Использую компонент XMLDocument и не как не могу понять как мне загрузить например вот это Все что находится между тегами...

XmlDocument и теги
Мне нужно отобразить в середине нода текст с &lt; &gt;, но мне он переводит как &amp;lt. Как убрать этот автоматический перевод и показывать как...

28
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
14.07.2018, 03:26
Студворк — интернет-сервис помощи студентам
Строка 4 должна быть в таком вот виде
XML
1
<uid> 1="34" 2="78"</uid>
,
а не так, как у Вас... Тогда, действительно, получим валидный формат
Миниатюры
Компонент XMLDocument  
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
15.07.2018, 07:20
D1973, я не нашел упоминаний о соглашениях на имена атрибутов
на имена узлов - нашел, там нужно начинаться с буквы
поэтому чисто в теории такой XML имеет место быть
но на практике я не знаю, как конкретный парсер будет смотреть на странные имена атрибутов
если есть возможность, конечно нужно предварить цифры любой буквой
хотя бы
XML
1
2
<aaa _1="123" _2="234">
</aaa>
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
15.07.2018, 10:19
krapotkin, тут даже дело не столько в именах атрибутов, хотя действительно странно видеть имя атрибута, начинающееся с цифры (м.б. просто не привычно). Самое главное: исходная строка
Цитата Сообщение от Amixon Посмотреть сообщение
<uid 1="34" 2="78"/>
не имеет ни закрывающей скобки в имени узла, ни закрывающего тэга узла uid... (XML из поста #17)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
15.07.2018, 11:01
и это тоже синтаксис не выходящий за рамки
если в теге нет текста, он может быть закрыт и так
XML
1
<aaa />
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
15.07.2018, 14:33
Цитата Сообщение от krapotkin Посмотреть сообщение
если в теге нет текста, он может быть закрыт и так
Ну вот и ответ на вопрос
Цитата Сообщение от Amixon Посмотреть сообщение
ПОЧЕМУ ВЫДАЕТ ПУСТУЮ СТРОКУ???
нет тэга закрытия - принимаем эту ноду пустой, текст не содержащей...
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
15.07.2018, 14:58
вот иногда удивляюсь я авторам

что случилось?
куда бежать?

как ЕЩЕ подробнее осветить тему ?
Миниатюры
Компонент XMLDocument  
0
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 13
15.07.2018, 16:55  [ТС]
это не моя тема, что это за тема я не могу понять??? откуда она взялась?????????
моя тема вот эта:
Компонент XMLDocument

Добавлено через 3 минуты
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
 
<location source="FoundByWifi">
    
        <coordinates latitude="52.9632645" longitude="36.0879745" nlatitude="52.9641529" nlongitude="36.0894496" />
 
</location>
Delphi
1
2
3
4
XMLDocument1.LoadFromFile('Example.xml');
XMLDocument1.Active := true;
Edit1.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['user'].ChildNodes['uid'].Attributes['1']);
XMLDocument1.Active := false;
Не могу понять, почему выдает пустую строку?
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
15.07.2018, 20:05
вот я один не понял последний пост???
в этом XML нет ВООБЩЕ никакого user, uid и атрибута 1 ????
оно не только пустую строку должно выдавать, а давать ошибку
0
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616
15.07.2018, 21:35
Лучший ответ Сообщение было отмечено Amixon как решение

Решение

Цитата Сообщение от Amixon Посмотреть сообщение
Не могу понять, почему выдает пустую строку?
В следующий раз не нужно придумывать Ваш мега XML-файл, который не соответствует действительности. Вы получаете ответ ровно на столько, на сколько точно указываете свое задание. А пытаться заменить что-либо в файле, не знаю как оно работает не нужно.

Вот это XML файл более похож на действительность.
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<location source="FoundByWifi">
       <coordinates latitude="52.9632645" longitude="36.0879745" nlatitude="52.9641529" nlongitude="36.0894496" />
</location>
Взяв неподумавши код, и почитав гору постов, вы даже не смогли элементарно разобраться, что такое есть NODE (он же узел) и что такое атрибуты, у этого узла.
Понятно что этот код (пост 27) и не будет работать вообще, ибо в файле нет узлов UID, USER с атрибутом 1.

В Вашем случае приведу пример как получить атрибуты узла coordinates. На форме следующие компоненты - 1 Button, 4 Edit, 1 XMLDocument. В папке, где компилируется проект лежит файл Example.xml.
В обработчике кнопки пишем следующий код:
Delphi
1
2
3
4
5
6
7
XMLDocument1.LoadFromFile('Example.xml');
   XMLDocument1.Active := true;
   Edit1.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['coordinates'].Attributes['latitude']);
   Edit2.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['coordinates'].Attributes['longitude']);
   Edit3.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['coordinates'].Attributes['nlatitude']);
   Edit4.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['coordinates'].Attributes['nlongitude']);
XMLDocument1.Active := false;
Все работает.

Проект XML.7z
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.07.2018, 21:35

XMLDocument и сертификат безопасности
При попытке скачать XML файл с сайта https://www.meteoservice.ru/ с помощью компонента XMLDocument, вылетает ошибка из блока except: ...

Работа с компонентом XMLDocument
Лет 15 назад сделал несколько программ на делфи. Сейчас возникла необходимость вспомнить и сделать пару утилит в которых нужно обработать...

Работа с компонентом XMLDocument
&lt;content id=&quot;7331&quot; includeTime=&quot;2013-03-02T16:35:20&quot; entryType=&quot;1&quot; hash=&quot;B40E668CD9FC506B941CE2DE50678160&quot;&gt; &lt;decision date=&quot;2013-02-19&quot;...

XMLDocument, запись строк в масив
Есть такой кусок кода, нужно чтоб каждая строчка записывалась в масив так item{Параметр cid}_{Параметр item}] &lt;collections&gt; ...

Не загружается файл. XMLDocument.LoadFromFile
Я на форум редко пишу, но это уже магия, и я не понимания почему не загружается файл try XMLDocument.LoadFromFile('reg/' +...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru