|
Вопрос # 2 914/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
вопрос по xml
использовал XML Data Binding
мне нужно, чтобы при сохранении в файл, если он существует, обновлялись лишь нужные поля в файле, если такие уже есть,
написал ниже приведенный код, но проблема в том, что при добавлении новых строк увеличивается размер XMLCollection, который просматривается заново каждый раз. естественно, размер коллекции больше, чем сохраненных элементов и выскакивает ошибка.
Подскажите, как грамотнее найти уже сущестующие в файле поля и обновить их?
Приложение: Переключить в обычный режим- var XMLDoc : TXMLDocument;
- var XMLCollection: IXMLCollectionType;
- var XMLItem : IXMLItemType;
- var XMLStationType: IXMLStationType;
-
- var item : TDataItem;
- var I: Integer;
- var findFile: Boolean;
- var findItem: Boolean;
- begin
- if ( CollectionPath = '' )
- then Exit;
-
- XMLDoc := TXMLDocument.Create(nil);
- XMLDoc.Options := XMLDoc.Options + [ doNodeAutoIndent ];
-
- findFile := False;
- if ( FileExists(CollectionPath) )
- then begin
- XMLDoc.LoadFromFile(CollectionPath);
- findFile := True;
- end;
-
- XMLCollection := TXmlFile.GetCollection(XMLDoc);
- XMLCollection.Attributes['Collection'] := TDataFormat.getCollectionName(CollectionPath);
-
- for item in Self
- do begin
- findItem := False;
-
- for I := 0 to XMLCollection.Count - 1
- do begin
- if ( item.Name = XMLCollection[ I ].Title )
- then begin
- findItem := True;
- Break;
- end;
- end;
-
- if findItem
- then begin
- XMLItem := XMLCollection.Item[ I ];
- end
- else begin
- XMLItem := XMLCollection.Add();
-
- XMLItem.Title := item.Name;
- end;
-
-
- if IsFact
- then XMLStationType := XMLItem.FactStation
- else XMLStationType := XMLItem.PlanStation;
-
- XMLStationType.Value := item.Value;
-
- end;
-
- TXmlFile.SaveCollection(XMLDoc, CollectionPath);
-
- XMLCollection := nil;
-
 |
Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 15 июня 2009, 10:29
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 15 июня 2009, 15:21; участников в обсуждении: 1.
|
Aндрей (статус: 1-ый класс), 15 июня 2009, 15:21 [#1]:
почему при добавлении XMLItem := XMLCollection.Add();
размерность XMLCollection.Count увеличивается не на единицу, а на некоторое число (иногда 3, иногда 21, ..)??
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|