Class XMLDocument
Defined in File tinyxml2.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public tinyxml2::XMLNode
(Class XMLNode)
Class Documentation
-
class XMLDocument : public tinyxml2::XMLNode
A Document binds together all the functionality. It can be saved, loaded, and printed to the screen. All Nodes are connected and allocated to a Document. If the Document is deleted, all its Nodes are also deleted.
Public Functions
-
XMLDocument(bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE)
constructor
-
~XMLDocument()
-
inline virtual XMLDocument *ToDocument() override
Safely cast to a Document, or null.
-
inline virtual const XMLDocument *ToDocument() const override
-
XMLError Parse(const char *xml, size_t nBytes = static_cast<size_t>(-1))
Parse an XML file from a character string. Returns XML_SUCCESS (0) on success, or an errorID.
You may optionally pass in the 'nBytes', which is the number of bytes which will be parsed. If not specified, TinyXML-2 will assume 'xml' points to a null terminated string.
-
XMLError LoadFile(const char *filename)
Load an XML file from disk. Returns XML_SUCCESS (0) on success, or an errorID.
-
XMLError LoadFile(FILE*)
Load an XML file from disk. You are responsible for providing and closing the FILE*.
NOTE: The file should be opened as binary ("rb") not text in order for TinyXML-2 to correctly do newline normalization.
Returns XML_SUCCESS (0) on success, or an errorID.
-
XMLError SaveFile(const char *filename, bool compact = false)
Save the XML file to disk. Returns XML_SUCCESS (0) on success, or an errorID.
-
XMLError SaveFile(FILE *fp, bool compact = false)
Save the XML file to disk. You are responsible for providing and closing the FILE*.
Returns XML_SUCCESS (0) on success, or an errorID.
-
inline bool ProcessEntities() const
-
inline Whitespace WhitespaceMode() const
-
inline bool HasBOM() const
Returns true if this document has a leading Byte Order Mark of UTF8.
-
inline void SetBOM(bool useBOM)
Sets whether to write the BOM when writing the file.
-
inline XMLElement *RootElement()
Return the root element of DOM. Equivalent to FirstChildElement(). To get the first node, use FirstChild().
-
inline const XMLElement *RootElement() const
-
void Print(XMLPrinter *streamer = 0) const
Print the Document. If the Printer is not provided, it will print to stdout. If you provide Printer, this can print to a file:
XMLPrinter printer( fp ); doc.Print( &printer );
Or you can use a printer to print to memory:
XMLPrinter printer; doc.Print( &printer ); // printer.CStr() has a const char* to the XML
-
virtual bool Accept(XMLVisitor *visitor) const override
Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.
This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)
The interface has been based on ideas from:
Which are both good references for "visiting".
An example of using Accept():
XMLPrinter printer; tinyxmlDoc.Accept( &printer ); const char* xmlcstr = printer.CStr();
-
XMLElement *NewElement(const char *name)
Create a new Element associated with this Document. The memory for the Element is managed by the Document.
-
XMLComment *NewComment(const char *comment)
Create a new Comment associated with this Document. The memory for the Comment is managed by the Document.
-
XMLText *NewText(const char *text)
Create a new Text associated with this Document. The memory for the Text is managed by the Document.
-
XMLDeclaration *NewDeclaration(const char *text = 0)
Create a new Declaration associated with this Document. The memory for the object is managed by the Document.
If the 'text' param is null, the standard declaration is used.:
<?xml version="1.0" encoding="UTF-8"?>
-
XMLUnknown *NewUnknown(const char *text)
Create a new Unknown associated with this Document. The memory for the object is managed by the Document.
-
void DeleteNode(XMLNode *node)
Delete a node associated with this document. It will be unlinked from the DOM.
-
void ClearError()
Clears the error flags.
-
inline bool Error() const
Return true if there was an error parsing the document.
-
const char *ErrorName() const
-
const char *ErrorStr() const
Returns a "long form" error description. A hopefully helpful diagnostic with location, line number, and/or additional info.
-
void PrintError() const
A (trivial) utility function that prints the ErrorStr() to stdout.
-
inline int ErrorLineNum() const
Return the line where the error occurred, or zero if unknown.
-
void Clear()
Clear the document, resetting it to the initial state.
-
void DeepCopy(XMLDocument *target) const
Copies this document to a target document. The target will be completely cleared before the copy. If you want to copy a sub-tree, see XMLNode::DeepClone().
NOTE: that the 'target' must be non-null.
-
inline virtual XMLNode *ShallowClone(XMLDocument*) const override
Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())
Note: if called on a XMLDocument, this will return null.
-
inline virtual bool ShallowEqual(const XMLNode*) const override
Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.
Note: if called on a XMLDocument, this will return false.
-
XMLDocument(bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE)