|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.03.2011, 15:36 | #1 |
Регистрация: 27.03.2011
Сообщений: 4
|
Разбор сложного xml файла
Прошу помощи.
Есть xml файл вида: Код HTML:
<?xml version="1.0"?> <DeviceProfile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Serial>24767</Serial> <Id>0</Id> <TerminalSerial>24767</TerminalSerial> <AnalogSensors> <AnalogSensor> <Name>Топливо</Name> <UnitText>л.</UnitText> <Enabled>true</Enabled> <AIN>0</AIN> <CalibrationPoints> <CalibrationPoint> <InputValue>0</InputValue> <OutputValue>880</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>21</InputValue> <OutputValue>550</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>25</InputValue> <OutputValue>500</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>42</InputValue> <OutputValue>450</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>59</InputValue> <OutputValue>400</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>76</InputValue> <OutputValue>350</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>90</InputValue> <OutputValue>300</OutputValue> </CalibrationPoint> </CalibrationPoints> <DI_Number>0</DI_Number> <FilterLength>20</FilterLength> </AnalogSensor> <AnalogSensor> <Name>Аналоговый вход 1</Name> <UnitText /> <Enabled>false</Enabled> <AIN>1</AIN> <CalibrationPoints> <CalibrationPoint> <InputValue>0</InputValue> <OutputValue>0</OutputValue> </CalibrationPoint> <CalibrationPoint> <InputValue>1023</InputValue> <OutputValue>1023</OutputValue> </CalibrationPoint> </CalibrationPoints> <DI_Number>0</DI_Number> <FilterLength>20</FilterLength> </AnalogSensor> .... Код:
Код:
Подскажите, что я делаю не так и что можно почитать по разбору xml. |
27.03.2011, 18:12 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
твой пример работал без ошибок но не показывал ничего (Delphi 7)
вот мой смотри держи код (он стал короче). Зачем каждый раз (при каждом клике) заниматься полной разборкой XML. Гораздо проще хранить разобранный и разбирать дополнительно только нужный кусочек.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 27.03.2011 в 18:16. |
27.03.2011, 19:37 | #3 |
Регистрация: 27.03.2011
Сообщений: 4
|
Спасибо, понял как работать с xml. Переписал ваш код на место своего, все компилируется. При открытии xml файла Name из AnalogSensor добавляются на ListBox, но при клике на по любой строке появляется ошибка:
Delphi XE |
27.03.2011, 22:07 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
DelphiXЕ увы нет.
не видя кода сказать что-то определенное трудно. проверьте на всякий случай. может вы случайно после заполнения Listbox сделали (оставили от предыдущего варианта). _xml.active:=false; _xml.Free; этого делать не надо. файл должен быть открыт постоянно. А переменную _xml лучше сделать полем класса.
программа — запись алгоритма на языке понятном транслятору
|
27.03.2011, 22:15 | #5 |
Регистрация: 27.03.2011
Сообщений: 4
|
Пробовал ваш проект запускал из архива и аналогичная ошибка.
Комментировал с конца до последней строчки и выяснил, что ошибка возникает на строчке: Код:
Последний раз редактировалось aspire89; 27.03.2011 в 22:23. |
27.03.2011, 23:17 | #6 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
ну если не нравится
r:=IXMLNODE(Pointer(CheckListBox1.I tems.Objects[i])); давай попробуем чуток по другому. j:=integer(CheckListBox1.Items.Obje cts[i]); Во вложении твой модуль переделанный на новый вариант. мои исправления выделены серией ///////////// ОТ ........... //////////// ДО P.S. сначала можешь поробовать заменить нашу проблемную строчку вот так. убрать Pointer r:=IXMLNODE(CheckListBox1.Items.Obj ects[i]); у меня так не компилилось но вдруг у тебя сработает.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 27.03.2011 в 23:24. |
28.03.2011, 00:33 | #7 |
Регистрация: 27.03.2011
Сообщений: 4
|
Без Pointer тоже не компилировалось. Но то, что вы исправили в исходнике работает. Спасибо огромное.
|
27.09.2013, 00:07 | #8 |
Новичок
Джуниор
Регистрация: 26.09.2013
Сообщений: 1
|
Хотя теме и больше двух лет, но она нашлась в яндексе и хочется сказать большое спасибо evg_m за рабочий код
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сформировать xml-файл на основе другого xml-файла | NieL | Общие вопросы Delphi | 2 | 21.12.2010 15:49 |
Разбор текстового файла в PGN формате | Magnum2 | Общие вопросы Delphi | 0 | 03.10.2010 00:17 |
Разбор файла OBJ_TEST | russian-stalker | Общие вопросы Delphi | 11 | 25.08.2008 11:37 |
Разбор XML-документов | Aiorosu | БД в Delphi | 0 | 19.07.2008 20:25 |
Задание на анализ и разбор xml файла | JazonDinAlt | Помощь студентам | 3 | 04.05.2008 16:08 |