@c title and irrelevant content and one child of type @c wxXML_TEXT_NODE
with @c hi as content.
+ The @c wxXML_PI_NODE type sets the name to the PI target and the contents to
+ the instructions. Note that whilst the PI instructions are often in the form
+ of pseudo-attributes these do not use the nodes attribute system. It is the users
+ responsibility to code and decode the instruction text.
+
If @c wxUSE_UNICODE is 0, all strings are encoded in the encoding given to
wxXmlDocument::Load (default is UTF-8).
This function searches only the parents of this node until it finds
@a grandparent or the @NULL node (which is the parent of non-linked
- nodes or the parent of a wxXmlDocument's root node).
+ nodes or the parent of a wxXmlDocument's root element node).
*/
int GetDepth(wxXmlNode* grandparent = NULL) const;
is represented by expat with the following tag tree:
@code
- wxXML_ENTITY_NODE name="tagname", content=""
+ wxXML_ELEMENT_NODE name="tagname", content=""
|-- wxXML_TEXT_NODE name="", content="tagcontent"
@endcode
or eventually:
@code
- wxXML_ENTITY_NODE name="tagname", content=""
+ wxXML_ELEMENT_NODE name="tagname", content=""
|-- wxXML_CDATA_SECTION_NODE name="", content="tagcontent"
@endcode
};
+//* special indentation value for wxXmlDocument::Save
+#define wxXML_NO_INDENTATION (-1)
+
+//* flags for wxXmlDocument::Load
+enum wxXmlDocumentLoadFlag
+{
+ wxXMLDOC_NONE,
+ wxXMLDOC_KEEP_WHITESPACE_NODES
+};
+
+
/**
@class wxXmlDocument
if (doc.GetRoot()->GetName() != "myroot-node")
return false;
+ // examine prologue
+ wxXmlNode *prolog = doc.GetDocumentNode()->GetChildren();
+ while (prolog) {
+
+ if (prolog->GetType() == wxXML_PI_NODE && prolog->GetName() == "target") {
+
+ // process Process Instruction contents
+ wxString pi = prolog->GetContent();
+
+ ...
+
+ }
+ }
+
wxXmlNode *child = doc.GetRoot()->GetChildren();
while (child) {
virtual ~wxXmlDocument();
/**
- Detaches the document root node and returns it.
+ Appends a Process Instruction or Comment node to the document prologue.
+
+ Calling this function will create a prologue or attach the node to the
+ end of an existing prologue.
+
+ @since 2.9.2
+ */
+ void AppendToProlog(wxXmlNode* node);
+
+ /**
+ Detaches the document node and returns it.
- The document root node will be set to @NULL and thus IsOk() will
+ The document node will be set to @NULL and thus IsOk() will
return @false after calling this function.
Note that the caller is responsible for deleting the returned node in order
to avoid memory leaks.
+
+ @since 2.9.2
+ */
+ wxXmlNode* DetachDocumentNode();
+
+ /**
+ Detaches the root entity node and returns it.
+
+ After calling this function, the document node will remain together with
+ any prologue nodes, but IsOk() will return @false since the root entity
+ will be missing.
+
+ Note that the caller is responsible for deleting the returned node in order
+ to avoid memory leaks.
*/
wxXmlNode* DetachRoot();
const wxString& GetFileEncoding() const;
/**
- Returns the root node of the document.
+ Returns the document node of the document.
+
+ @since 2.9.2
+ */
+ wxXmlNode* GetDocumentNode() const;
+
+ /**
+ Returns the root element node of the document.
*/
wxXmlNode* GetRoot() const;
virtual bool Save(wxOutputStream& stream, int indentstep = 2) const;
/**
- Sets the enconding of the document.
+ Sets the document node of this document.
+
+ Deletes any previous document node.
+ Use DetachDocumentNode() and then SetDocumentNode() if you want to
+ replace the document node without deleting the old document tree.
+
+ @since 2.9.2
+ */
+ void SetDocumentNode(wxXmlNode* node);
+
+ /**
+ Sets the encoding of the document.
*/
void SetEncoding(const wxString& enc);
void SetFileEncoding(const wxString& encoding);
/**
- Sets the root node of this document. Deletes previous root node.
- Use DetachRoot() and then SetRoot() if you want to replace the root
- node without deleting the old document tree.
+ Sets the root element node of this document.
+
+ Will create the document node if necessary. Any previous
+ root element node is deleted.
*/
void SetRoot(wxXmlNode* node);