Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
halfblood

Как создавать и редактировать xml-файлы?

09.04.2008, 20:02. Показов 3904. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я думаю для вас ето простенький вопрос(буду признателен за помощь).
А вопрос состоит вот в чем: как создавать и редактировать xml-файлы?
Спасибо наперед за ответ.
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2008, 20:02
Ответы с готовыми решениями:

Разработать программу, которая сможет создавать и редактировать простые HTML файлы
Разработать программу, которая сможет создавать и редактировать простые HTML файлы.

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

Как создавать и редактировать стили в Expression Blend 4
Всем привет! Есть ли какое-нибудь руководство по созданию дизайна элементов Expression Blend 4? Спасибо!

2
2 / 2 / 3
Регистрация: 20.03.2008
Сообщений: 27
10.04.2008, 09:10
Лучший ответ Сообщение было отмечено как решение

Решение

сделать экспорт TDataSet в XML файл

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
{Unit to export a dataset to XML}
 
Unit DS2XML;
interface
uses Classes, DB;
Procedure DatasetToXML(Dataset: TDataSet; FileName: String);
 
implementation
uses SysUtils;
 
Var SourceBuffer:  PChar;
Procedure WriteString(Stream: TFileStream; s: String);
Begin
   StrPCopy(SourceBuffer, s);
   Stream.Write(SourceBuffer[0], StrLen(SourceBuffer));
End;
 
Procedure WriteFileBegin(Stream: TFileStream; Dataset: TDataSet);
Function XMLFieldType(fld: TField):  string;
Begin
   Case fld.DataType Of 
      ftString:  Result := '"string" WIDTH="' + IntToStr(fld.Size) + '"';
      ftSmallint:  Result := '"i4"';
 
      //?? ftInteger: Result := '"i4"';
      ftWord:  Result := '"i4"';
 
      //?? ftBoolean: Result := '"boolean"';
      ftAutoInc:  Result := '"i4" SUBTYPE="Autoinc"';
      ftFloat:  Result := '"r8"';
      ftCurrency:  Result := '"r8" SUBTYPE="Money"';
      ftBCD:  Result := '"r8"';
 
      //?? ftDate: Result := '"date"';
      ftTime:  Result := '"time"';
 
      //?? ftDateTime: Result := '"datetime"';
      Else
   End;
   If fld.Required Then Result := Result + ' required="true"';
   If fld.ReadOnly Then Result := Result + ' readonly="true"';
End;
 
Var i:  Integer;
Begin
   WriteString(Stream, '<?xml version="1.0" standalone="yes"?><!-- Generated by SMExport --> ' +
               '<DATAPACKET Version="2.0">');
   WriteString(Stream, '<METADATA><FIELDS>'); {write th metadata}
   With Dataset Do
      For i := 0 To FieldCount - 1 Do
      Begin
         WriteString(Stream, '<FIELD attrname="' + Fields[i].FieldName + '" fieldtype=' +
                     XMLFieldType(Fields[i]) + '/>');
      End;
   WriteString(Stream, '</FIELDS>');
   WriteString(Stream, '<PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="1033"/>');
   WriteString(Stream, '</METADATA><ROWDATA>');
End;
Procedure WriteFileEnd(Stream: TFileStream);
Begin
   WriteString(Stream, '</ROWDATA></DATAPACKET>');
End;
Procedure WriteRowStart(Stream: TFileStream; IsAddedTitle: Boolean);
Begin
   If Not IsAddedTitle Then WriteString(Stream, '<ROW');
End;
Procedure WriteRowEnd(Stream: TFileStream; IsAddedTitle: Boolean);
Begin
   If Not IsAddedTitle Then WriteString(Stream, '/>');
End;
Procedure WriteData(Stream: TFileStream; fld: TField; AString: ShortString);
Begin
   If Assigned(fld) And (AString <> '') Then
      WriteString(Stream, ' ' + fld.FieldName + '="' + AString + '"');
End;
Function GetFieldStr(Field: TField):  string;
Function GetDig(i, j: Word):  string;
Begin
   Result := IntToStr(i);
   While (Length(Result) < j) Do
      Result := '0' + Result;
End;
 
Var Hour, Min, Sec, MSec:  Word;
Begin
   Case Field.DataType Of 
      ftBoolean:  Result := UpperCase(Field.AsString);
      ftDate:  Result := FormatDateTime('yyyymmdd', Field.AsDateTime);
      ftTime:  Result := FormatDateTime('hhnnss', Field.AsDateTime);
      ftDateTime:
      Begin
         Result := FormatDateTime('yyyymmdd', Field.AsDateTime);
         DecodeTime(Field.AsDateTime, Hour, Min, Sec, MSec);
         If (Hour <> 0) Or (Min <> 0) Or (Sec <> 0) Or (MSec <> 0) Then
            Result := Result + 'T' + GetDig(Hour, 2) + ':' + GetDig(Min, 2) +
            ':' + GetDig(Sec, 2) + GetDig(MSec, 3);
      End;
      Else Result := Field.AsString;
   End;
End;
Procedure DatasetToXML(Dataset: TDataSet; FileName: String);
 
Var Stream:  TFileStream;
   bkmark:  TBookmark;
   i:  Integer;
Begin
   Stream := TFileStream.Create(FileName, fmCreate);
   SourceBuffer := StrAlloc(1024);
   WriteFileBegin(Stream, Dataset);
   With DataSet Do
   Begin
      DisableControls;
      bkmark := GetBookmark;
      First; {write a title row}
      WriteRowStart(Stream, True);
      For i := 0 To FieldCount - 1 Do
         WriteData(Stream, Nil, Fields[i].DisplayLabel); {write the end of row}
      WriteRowEnd(Stream, True);
      While (Not EOF) Do
      Begin
         WriteRowStart(Stream, False);
         For i := 0 To FieldCount - 1 Do
            WriteData(Stream, Fields[i], GetFieldStr(Fields[i])); {write the end of row}
         WriteRowEnd(Stream, False);
         Next;
      End;
      GotoBookmark(bkmark);
      EnableControls;
   End;
   WriteFileEnd(Stream);
   Stream.Free;
   StrDispose(SourceBuffer);
End;
End.
Delphi
1
2
3
4
5
6
7
//Beispiel, Example:
 
Uses DS2XML;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
   DatasetToXML(Table1, 'test.xml');
End;
0
halfblood
10.04.2008, 22:45
Спасибо
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2008, 22:45
Помогаю со студенческими работами здесь

Как программно создавать, редактировать, сохранять MS Word, Excel 2013?
Платформа: Microsoft Visual Studio Community 2015. Предпочитаемый язык программирования: C#. Система: Windows 8.1. Нужно создать очень...

Подскажите как создать приложение, позволяющее создавать и редактировать древообразные структуры записей
Разработать многооконное MDI приложение, позволяющее создавать и редактировать древообразные структуры записей, сохранять их в файлах и...

Как редактировать элементы в XML-документе?
Добрый день! У меня есть проект Windows Forms с привязанным XML-документом. Данные из XML попадают в текстбоксы формы. Как можно...

Как редактировать ui файлы?
Привет. как можно редактировать .ui файлы?

Как считывать и как записывать XML файлы? И вообще,является ли хорошим тоном хранить данные в xml?
Я знаю,насколько часто меня любят отправлять в гугл,но проблема такова,что везде показывается работа с разными классами и методами записи и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru