powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Создание XML в Delphi
4 сообщений из 4, страница 1 из 1
Создание XML в Delphi
    #36729762
toha_rohes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разбираюсь с XML. Тяжело пока идет. Направьте в нужную сторону пожалуйста.

Есть такой код в Delphi.

Код: plaintext
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.
uses
  *, MSXML2_TLB;

var  
  coDoc        : CoDomDocument ;
  Doc          : DomDocument ;
  r            : IXMLDOMElement;

  Node1,NameFile, Info  : IXMLDOMElement;
  txt          : IXMLDOMText;
  attr         : IXMLDOMAttribute;
  
begin

  Doc:=coDoc.Create;
  Doc.Set_async(false);
  Doc.LoadXML('<File/>');
  r:=Doc.Get_documentElement;

  NameFile := Doc.createElement ( 'FileName');
  txt := Doc.createTextNode('111.xml');
  NameFile.appendChild(txt);
  r. appendChild(NameFile);

end;


Получается файл:

Код: plaintext
1.
2.
3.
4.
5.
6.
<File>
 <FileName>
  111 .xml 
 </FileName>

</File>

Что нужно сделать чтобы в начале файла была строка <?xml version="1.0" encoding="Windows-1251" ?>?

И вообще правильно ли будет формировать файл xml так как я делаю?
т.е. (упрощенно)

Код: plaintext
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.
  Doc:=coDoc.Create;
  Doc.Set_async(false);
  Doc.LoadXML('<File/>');
  r:=Doc.Get_documentElement;

  NameFile := Doc.createElement ( 'FileName');
  txt := Doc.createTextNode('111.xml');
  NameFile.appendChild(txt);
  r. appendChild(NameFile);

  Info := Doc.createElement ( 'Info') ;

  Query1.First;

  while not Query.Eof do
  begin

    SNumber := Doc.createElement ( 'Number') ;
    txt := Doc.createTextNode(Query.FieldByName('Value').AsString);
    SNumber.appendChild(txt);
    Info. appendChild(SNumber);
    r. appendChild(Info);
 
    Query1.Next;
 end;


Дайте пожалуйста ссылки на нормальное описание всего этого процесса, а то пока всё очень непонятно.
Заранее спасибо.
...
Рейтинг: 0 / 0
Создание XML в Delphi
    #36730185
Edkonst2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
toha_rohesРазбираюсь с XML. Тяжело пока идет. Направьте в нужную сторону пожалуйста.
...
Заранее спасибо.

Выдрал кусок:
Код: plaintext
1.
2.
3.
4.
5.
UTF_XML_BLANK :=
        '<?xml version="1.0" encoding="windows-1251" standalone="yes"?>' + sLineBreak +
        DM.sp_Exec.Fields[ 0 ].AsString;
      XmlDoc := TXMLDocument.Create('') as IXMLDocument;
      XmlDoc.LoadFromXML(UTF_XML_BLANK);
Разберешься?
...
Рейтинг: 0 / 0
Создание XML в Delphi
    #36730508
toha_rohes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
UTF_XML_BLANK :=
        '<?xml version="1.0" encoding="windows-1251" standalone="yes"?>' + sLineBreak;

Doc.LoadXML(UTF_XML_BLANK);
...


Access violation....
...
Рейтинг: 0 / 0
Создание XML в Delphi
    #36731885
toha_rohes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. Сделал через XMLDocument.

Другой вопрос. У меня много элементов в XML.
Я должен в переменных описывать каждый узел?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var

xml1 : IDOMDocument;

n1,n2,n3 ... :IDOMNode;

begin
...
n1.appendChild(n2);
...
n1.appendChild(n3);
end;

или каждый узел определяет уровень в дереве и я должен просто делать много раз?
Код: plaintext
1.
2.
3.
4.
5.
6.
n2 := xml1.createElement ('node');
n1.appendChild(n2);

n2 := xml1.createElement ('node1');
n1.appendChild(n2);
...

Надеюсь правильно спросил.

И еще вопрос - надо ли как-то освобождать память после создания файла xml?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Создание XML в Delphi
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]