атрибуты главной ноды XML

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Zak
новенький
Сообщения: 31
Зарегистрирован: 16.06.2013 07:24:39
Откуда: морозная Сибирь

атрибуты главной ноды XML

Сообщение Zak »

Доброго дня.
Прошу помощи. Не получается сформировать файл XML имеющий атрибуты у главной ноды (RootNode)

вот что примерно надо получить:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ГлавнаяНода АтрибутГлавнойНоды="ЗначениеАтрибута">
   <Ещеноды>
      <ИТД>....</ИТД>
   </Ещеноды>
</ГлавнаяНода>


Пишу следующее:

Код: Выделить всё

var
  Doc: TXMLDocument;
  RootNode : TDOMNode;
  RootAttr : TDOMAttr;

begin
  Doc := TXMLDocument.Create;
  RootNode := Doc.CreateElement(UTF8Decode('ГлавнаяНода'));
  RootAttr := Doc.CreateAttribute(UTF8Decode('АтрибутГлавнойНоды'));
  RootAttr.Value := 'ЗначениеАтрибута';
...


файл формируется как надо с главной нодой "ГлавнаяНода" , но атрибутов нету
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Код: Выделить всё

RootNode.AttribStrings['ффвфы'] := 'уцуцуц';
Zak
новенький
Сообщения: 31
Зарегистрирован: 16.06.2013 07:24:39
Откуда: морозная Сибирь

Сообщение Zak »

*Rik* писал(а):

Код: Выделить всё

RootNode.AttribStrings['ффвфы'] := 'уцуцуц';

Спасибо, но AttribStrings "не находится" среди свойств RootNode

в "unit DOM" сказано, что "Introduced in DOM Level 2"

Проблем с установкой и назначением атрибутов последующих элементов у меня не возникает
Проблема именно в корне. Кто сможет направить или подсказать?

Добавлено спустя 19 минут 46 секунд:
всем спасибо. решение сообразил, выглядит так:

Код: Выделить всё

var
  Doc: TXMLDocument;
  RootNode : TDOMNode;

begin
  Doc := TXMLDocument.Create;
  RootNode := Doc.CreateElement(UTF8Decode('ГлавнаяНода'));
  TDOMElement(RootNode).SetAttribute(UTF8Decode('АтрибутГлавнойНоды'), UTF8Decode('ЗначениеАтрибута'));
...
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Zak писал(а):
*Rik* писал(а):всем спасибо. решение сообразил, выглядит так:

Код: Выделить всё

var
  Doc: TXMLDocument;
  RootNode : TDOMNode;

begin
  Doc := TXMLDocument.Create;
  RootNode := Doc.CreateElement(UTF8Decode('ГлавнаяНода'));
  TDOMElement(RootNode).SetAttribute(UTF8Decode('АтрибутГлавнойНоды'), UTF8Decode('ЗначениеАтрибута'));
...

По мне лучше так:

Код: Выделить всё

var
  Doc: TXMLDocument;
  RootNode : TDOMElement;

begin
  Doc := TXMLDocument.Create;
  RootNode := Doc.CreateElement(UTF8Decode('ГлавнаяНода')) as TDOMElement;
  RootNode.SetAttribute(UTF8Decode('АтрибутГлавнойНоды'), UTF8Decode('ЗначениеАтрибута'));
...
Ответить