PLCnext API Documentation 25.0.2.69
XmlConfigDocument.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/System/Commons/Xml/IXmlSerializable.hpp"
9#include "Arp/System/Commons/Xml/XmlSerializationContext.hpp"
10#include "Arp/System/Commons/Configuration/ConfigSettings.hpp"
11#include "Arp/System/Commons/Xml/DocumentTraits.hpp"
12
13namespace Arp { namespace System { namespace Commons { namespace Xml
14{
15
16// forwards
17class MultiXmlConfigDocument;
18
19// TContent policy: implement IXmlSerializable and default contructable
22{
23 friend class XmlSerializationContext;
24
25public: // construction/destruction
26 XmlConfigDocument(const String& documentXmlElementName, IXmlSerializable& content);
29 virtual ~XmlConfigDocument(void) = default;
30
31public: // setter/getter operations
32 const String& GetPath(void)const;
35 Version GetRecentVersion(void)const;
36 const DocumentTraits& GetTraits(void)const;
37
38public: // operations
39 void Load(const String& documentPath);
40 void Load(const String& documentPath, const DocumentTraits& documentTraits);
41 bool TryLoad(const String& documentPath);
42 bool TryLoad(const String& documentPath, const DocumentTraits& documentTraits);
43 void Save(const String& documentPath);
44 void Save(const String& documentPath, bool syncFilesystem);
45 void Save(const String& documentPath, bool syncFilesystem, const Version& schemaVersion);
46 void Save(void);
47 void Save(bool syncFilesystem);
48 void LoadString(const String& xmlContent, const String& contentTraits = String::Empty);
49
50protected: // virtual methods to override
51 virtual void ReadDocument(XmlReader& reader);
52
53private: // deleted methods
55 XmlConfigDocument(const XmlConfigDocument& arg) = delete;
57 XmlConfigDocument& operator=(const XmlConfigDocument& arg) = delete;
58
59protected: // fields
60 MultiXmlConfigDocument* pRootDoc;
61 IXmlSerializable& content;
62 String documentXmlElementName;
63 String path;
64 DocumentTraits traits;
65 Version recentVersion;
66};
67
68}}}} // end of namespace Arp::System::Commons::Xml
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
This class provides versioning.
Definition: Version.hpp:19
This class collects several document traits.
Definition: DocumentTraits.hpp:20
Interface for all classes which should be serializable for xml
Definition: IXmlSerializable.hpp:18
special version of XmlConfigDocument to include xml configuration data from other xml files inside a ...
Definition: MultiXmlConfigDocument.hpp:27
Class handle xml configuration documents
Definition: XmlConfigDocument.hpp:22
virtual ~XmlConfigDocument(void)=default
Destructs this instance and frees all resouces.
XmlConfigDocument(const String &documentXmlElementName, IXmlSerializable &content)
Constructs an XmlConfigDocument instance.
Definition: XmlConfigDocument.cpp:22
MultiXmlConfigDocument * GetRootDocument(void)
Returns a pointer to the root document for MultiXmlConfigDocument
Definition: XmlConfigDocument.cpp:198
const String & GetPath(void) const
Returns the path to the current file loaded by this document
Definition: XmlConfigDocument.cpp:186
void Load(const String &documentPath)
Loads the document from specified <paramref="documentPath"/>
Definition: XmlConfigDocument.cpp:42
bool TryLoad(const String &documentPath)
Tries to load document from specified <paramref="documentPath"/>
Definition: XmlConfigDocument.cpp:61
void LoadString(const String &xmlContent, const String &contentTraits=String::Empty)
Loads the document from a string
Definition: XmlConfigDocument.cpp:92
void Save(void)
saves the content xml encoded to the file the document was loaded from with filesystem sync
Definition: XmlConfigDocument.cpp:216
Version GetRecentVersion(void) const
Returns the recent implemented schema version, used by XmlSerializationContext
Definition: XmlConfigDocument.cpp:204
IXmlSerializable & GetContent(void)
Returns the current content of this document
Definition: XmlConfigDocument.cpp:192
const DocumentTraits & GetTraits(void) const
Returns current traits of document
Definition: XmlConfigDocument.cpp:210
Class to read an XML File. Non buffered reader, can only read forward
Definition: XmlReader.hpp:25
XML context used during XML reading and writing to hold the context information
Definition: XmlSerializationContext.hpp:27
Root namespace for the PLCnext API