AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2011, 13:15   #1  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
У xml документа строгая внутренняя структура, похожая на дерево, и должен быть обязательный корневой элемент.
Есть замечательный кодеюнит 6224 XML DOM Management, в котором собраны ф-ции для работы с xml документом с отловом ошибок.
Пример будет построен на использовании ф-ций, указанного кодеюнита.
Код:
CREATE(xmlDocument);
// тэг Root будет нашим корнем. 
// при создании документа в loadxml подставляется начальный заголовок файла,
//  а при разборе путь до загружаемого файла

xmldocument.loadxml := '<?xml version="1.0" encoding="utf-8"?><Root/>';
// Указываем переменную на корневой элемент
XMLNode := xmldocument.documentElement;

  IF AddElement(XMLNode,'Message', '', NameSpace, XMLNodeChild) > 0 THEN
    EXIT;
  
  //Переходим внутрь тега Message
  XMLNode := XMLNodeChild;
  IF AddElement(XMLNode, 'sender', 'Вася', NameSpace, XMLNodeChild) > 0 THEN
    EXIT;
  
  IF AddElement(XMLNode, 'recipient', 'Петя', NameSpace, XMLNodeChild) > 0 THEN
    EXIT;
  
  IF AddElement(XMLNode, 'issue', format(today), NameSpace, XMLNodeChild) > 0 THEN
    EXIT;

  // переходим в тэг root
  XMLNodeChild := XMLNode;
  XMLNode := XMLNodeChild.parentNode;

   // Создаем следующий тег
  IF AddElement(XMLNode, 'Message2', '', NameSpace, XMLNodeChild) > 0 THEN
    EXIT;
  
  XMLNode := XMLNodeChild;
  IF AddElement(XMLNode, 'Item', 'Велик', NameSpace, XMLNodeChild) > 0 THEN
     EXIT;

xmldocument.save(path);

Переменные
XMLNode Automation 'Microsoft XML, v3.0'.IXMLDOMNode
XMLNodeChild Automation 'Microsoft XML, v3.0'.IXMLDOMNode
NameSpace Text 255

Документ будет иметь следующий вид:
Код:
  <?xml version="1.0" encoding="utf-8" ?> 
  <Root>
   <Message>
    <sender>Вася</sender> 
    <recipient>Петя</recipient> 
    <issue>2011-12-02</issue> 
   </Message>
   <Message2>
    <Item>Велик</Item>
   </Message2>
  </Root>
Если есть, то посмотрите как сделаны кодеюниты 6225 и кажется 6226.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:48.