Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TXMLDocument [D7, XP]


Страницы:   1 2

DimOk ©   (2007-09-05 11:26:00) 

Добрый день уважаемые мастера. Подскажите пожалуйсто, что я  не так делаю. Есть XML документ мне нужно получить атрибут первого узла
- <Data dateFirst="02.05.2007 10:57:40" dateLast="02.05.2007 10:57:47" NumMag="131611">
- <doc numdoc="000892" typedoc="В/П" sclad="МZ0211" agentcode="МZ0101" date="02.05.2007" dopcode="082670" codeval="USD" cenaval="1" code_cart="" prim="">
 <table nnum="63230179" kol="1" cena="326,1" cenaout="321,48" />
 </doc>
- <doc numdoc="000654" typedoc="ПРН" sclad="МZ0101" agentcode="00000А" date="02.05.2007" dopcode="" codeval="USD" cenaval="1" code_cart="" prim="">
 <table nnum="61120519" kol="1" cena="289,7067" cenaout="249,87" />

код в Delphi:
procedure load_to_1C_app();
var  XMLFile: TXMLDocument;
    value: Variant;
    node: IXMLNode;
begin
XMLFile := TXMLDocument.Create('C:\Выгрузка.xml');
value := XMLFile.ChildNodes.First.GetAttribute('dateFirst');
......
после выполнения подчеркнутой строчки выдает ошибку:
Abstract Error
В чем может быть дело? За ранее всем благодарен.


DimOK   (2007-09-05 12:42:00) [21]


> Я же тебе показал что делает конструктор.

Понятно, но
XMLFile := TXMLDocument.Create('C:\Выгрузка.xml');
XMLFile.LoadFromFile('C:\Выгрузка.xml'); // Вылетает ошибка RUNTime опять.


Reindeer Moss Eater   (2007-09-05 12:38:00) [22]

Все давно уже показано еще в самом вопросе


novill   (2007-09-05 12:36:00) [23]

код показывай.


Reindeer Moss Eater   (2007-09-05 12:36:00) [24]

Я же тебе показал что делает конструктор.


DimOK   (2007-09-05 12:35:00) [25]


> И в исходники смотреть - не царское это дело

Instantiates a TXMLDocument object.

Delphi syntax:

constructor Create(const AFileName: DOMString); reintroduce; overload;

Это из справки.....


DimOK   (2007-09-05 12:31:00) [26]


> а у тебя файл точно открывается?
> попробуй из него хоть что-то получить. например, сам текст
> хмл.

В отладчике:
XMLFile := TXMLDocument.Create('C:\Выгрузка.xml');

XMLFile =  ([csInheritable]) - не зная что это значит. А ShowMessage(XMLFile.XML.Text) выдает ошибку RUNTime


Reindeer Moss Eater   (2007-09-05 12:31:00) [27]

И в исходники смотреть - не царское это дело

constructor TXMLDocument.Create(const AFileName: DOMString);
begin
 inherited Create(nil);
 FFileName := AFileName;
end;

И все.
Никаких намеков на загрузку самого документа


Reindeer Moss Eater   (2007-09-05 12:29:00) [28]

XMLFile.ChildNodes.First тоже nil

Но тебе же на это по барабану. Ты ничего не проверяешь.


novill   (2007-09-05 12:26:00) [29]

а у тебя файл точно открывается?
попробуй из него хоть что-то получить. например, сам текст хмл.


DimOK   (2007-09-05 12:24:00) [30]


> XMLFile.DocumentElement возврощаят nil

И XMLFile.ChildNodes.First тоже nil


DimOK   (2007-09-05 12:22:00) [31]


> Проверять надо

XMLFile.DocumentElement возврощаят nil


Reindeer Moss Eater   (2007-09-05 12:19:00) [32]

Проверять надо


DimOK   (2007-09-05 12:17:00) [33]


> Строишь трехколенный вызов, и абсолютно уверен, что все
> они возвращают валидные элементы.

Как правильно то...?


Reindeer Moss Eater   (2007-09-05 12:14:00) [34]

Понятно, что будет плохо.
Строишь трехколенный вызов, и абсолютно уверен, что все они возвращают валидные элементы.


DimOK   (2007-09-05 12:12:00) [35]


> Суть в том, что ты ломишься не к тому узлу, к которому хотел.

Понятно. Я и  ChildNodes['Data'].GetAttribute('dateFirst'); но все так же....(плохо)


Reindeer Moss Eater   (2007-09-05 12:02:00) [36]

Суть в том, что ты ломишься не к тому узлу, к которому хотел.


DimOK   (2007-09-05 12:00:00) [37]


> ShowMessage(XMLFile.ChildNodes.First.NodeName);

Тоже самое, но я думаю что дело в том что нет XMLFile.Active := True;
Добавил.... и теперь вообще что то не понятное. Ошибка Access violation at address 00000000 и т.п.......


Reindeer Moss Eater   (2007-09-05 11:50:00) [38]

А вот это посмотри:
ShowMessage(XMLFile.ChildNodes.First.NodeName);


DimOK   (2007-09-05 11:40:00) [39]


> XMLFile.DocumentElement...

value := XMLFile.DocumentElement.GetAttribute('dateFirst');
Если это так, то такая же ошибка :(


palva   (2007-09-05 11:34:00) [40]

XMLFile. DocumentElement...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо