#pragma once
#include <memory>
#include <string>

#include "xml-elements/XmlElement.h"
#include "xml-elements/XmlProlog.h"

class XmlDocument
{
    XmlPrologUPtr mProlog;
    XmlElementUPtr mRoot;

public:
    XmlDocument();

    static std::unique_ptr<XmlDocument> Create();

    XmlProlog* GetProlog() const;
    XmlElement* GetRoot() const;

    void SetProlog(XmlPrologUPtr prolog);
    void SetRoot(XmlElementUPtr root);
};

using XmlDocumentPtr = std::shared_ptr<XmlDocument>;
using XmlDocumentUPtr = std::unique_ptr<XmlDocument>;
