У 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.