Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TXMLDocument и пустой ChildNodes 
V
    Опции темы
MrDmitry
Дата 9.1.2012, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте, столкнулся с такой проблемой.

Если в xml есть пустые значения то txmldocument стапорится на них и выводит ошибку 
list index out of bounds (0)

Вот кусочек кода как я парсирую xml

Код

XMLDocument1.Active:=true;

XMLDocument1.LoadFromFile('otvet.xml');

res.name := VarToStr(XMLDocument1.DocumentElement.ChildNodes['name'].ChildNodes[0].text);
res.surname := VarToStr(XMLDocument1.DocumentElement.ChildNodes['surname'].ChildNodes[0].text);
res.pat := VarToStr(XMLDocument1.DocumentElement.ChildNodes['patronymic'].ChildNodes[0].text);


....



Сам xml


Код

<?xml version="1.0"?>
<xml_data>
<name></name>
<surname></surname>
<patronymic></patronymic>
<sex>M</sex>
<birth>04.07.1901</birth>
<regdate>15.11.2011</regdate>
<bonus>10</bonus>
<type>0</type>
<discount>0</discount>
<success>1</success>
<balance>136.83</balance>
<total>0.00</total>
<quantity>70</quantity>
<lastdate>18.11.2011</lastdate>
</xml_data>



Извините что без форматирования. Но как видно в xml пункты name surname и patronymic пустые и именно на них вылетает данная ошибка. Как это можно обойти?

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


Законченный романтик
***


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

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



Ошибка не в XML - у меня великолепно живёт с пустыми и не жалуется ни импорт ни экспорт...

VarToStr - объясните зачем вот этот оператор вам сдался?

XMLDocument1.DocumentElement.ChildNodes['name'].ChildNodes[0].text - возвращает и так строковую величину(string) и если она пустая, то возвращается пустая строка.
Короче у вас возвращается string, а вот что с ним делать дальше - это уже сами решите, если должно храниться целое, то при необходимости преобразовываете в целое число...


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
MetalFan
Дата 9.1.2012, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



MrDmitry, ну так проверить, сколько там детишек(>0), прежде, чем обращаться к ChildNodes['name'].ChildNodes[0]


DarkProg, ошибка list index out of bounds (0) возникает не из-за этого.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
DarkProg
Дата 9.1.2012, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


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

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



А точно, недоглядел...

Вот так надо 
Код

XMLReport.DocumentElement.ChildNodes['NAME'].Text



--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
MrDmitry
Дата 9.1.2012, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DarkProg @ 9.1.2012,  22:45)
А точно, недоглядел...

Вот так надо 
Код

XMLReport.DocumentElement.ChildNodes['NAME'].Text

Вот так заработало. Спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

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

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


 




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


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

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