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

#include "XmlElement.h"
#include "XmlProlog.h"

class XmlElement;
class XmlProlog;
using XmlPrologPtr = std::unique_ptr<XmlProlog>;
using XmlElementPtr = std::unique_ptr<XmlElement>;

class XmlDocument
{
public:
    XmlDocument();
    virtual ~XmlDocument();

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

    XmlProlog* getProlog() const;
    XmlElement* getRoot() const;

    void setProlog(XmlPrologPtr prolog);
    void setRoot(XmlElementPtr root);
private:
    XmlPrologPtr mProlog;
    XmlElementPtr mRoot;
};

using XmlDocumentPtr = std::unique_ptr<XmlDocument>;
