Add support for elements preceding the document node in wxXML.

This is mainly useful for parsing and generating processing instructions but
can be used for any kind of elements, e.g. also comments, occurring before the
document node in XML documents.

Closes #11593.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-03-30 14:16:19 +00:00
parent e8afaabf01
commit cee8636e94
5 changed files with 405 additions and 63 deletions

View File

@@ -257,7 +257,7 @@ public:
const wxString& encoding = wxT("UTF-8"));
wxXmlDocument(wxInputStream& stream,
const wxString& encoding = wxT("UTF-8"));
virtual ~wxXmlDocument() { wxDELETE(m_root); }
virtual ~wxXmlDocument() { wxDELETE(m_docNode); }
wxXmlDocument(const wxXmlDocument& doc);
wxXmlDocument& operator=(const wxXmlDocument& doc);
@@ -273,10 +273,13 @@ public:
virtual bool Save(const wxString& filename, int indentstep = 2) const;
virtual bool Save(wxOutputStream& stream, int indentstep = 2) const;
bool IsOk() const { return m_root != NULL; }
bool IsOk() const { return GetRoot() != NULL; }
// Returns root node of the document.
wxXmlNode *GetRoot() const { return m_root; }
wxXmlNode *GetRoot() const;
// Returns the document node.
wxXmlNode *GetDocumentNode() const { return m_docNode; }
// Returns version of document (may be empty).
const wxString& GetVersion() const { return m_version; }
@@ -286,10 +289,13 @@ public:
const wxString& GetFileEncoding() const { return m_fileEncoding; }
// Write-access methods:
wxXmlNode *DetachRoot() { wxXmlNode *old=m_root; m_root=NULL; return old; }
void SetRoot(wxXmlNode *node) { wxDELETE(m_root); m_root = node; }
wxXmlNode *DetachDocumentNode() { wxXmlNode *old=m_docNode; m_docNode=NULL; return old; }
void SetDocumentNode(wxXmlNode *node) { wxDELETE(m_docNode); m_docNode = node; }
wxXmlNode *DetachRoot();
void SetRoot(wxXmlNode *node);
void SetVersion(const wxString& version) { m_version = version; }
void SetFileEncoding(const wxString& encoding) { m_fileEncoding = encoding; }
void AppendToProlog(wxXmlNode *node);
#if !wxUSE_UNICODE
// Returns encoding of in-memory representation of the document
@@ -307,7 +313,7 @@ private:
#if !wxUSE_UNICODE
wxString m_encoding;
#endif
wxXmlNode *m_root;
wxXmlNode *m_docNode;
void DoCopy(const wxXmlDocument& doc);