Показать сообщение отдельно
Старый 07.12.2011, 13:15   #4  
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.