#include <tinyxml2.h>
Classes | |
class | DepthTracker |
Public Member Functions | |
virtual bool | Accept (XMLVisitor *visitor) const |
void | Clear () |
Clear the document, resetting it to the initial state. | |
void | ClearError () |
void | DeepCopy (XMLDocument *target) const |
void | DeleteNode (XMLNode *node) |
bool | Error () const |
Return true if there was an error parsing the document. | |
XMLError | ErrorID () const |
Return the errorID. | |
int | ErrorLineNum () const |
Return the line where the error occured, or zero if unknown. | |
const char * | ErrorName () const |
const char * | ErrorStr () const |
bool | HasBOM () const |
char * | Identify (char *p, XMLNode **node) |
XMLError | LoadFile (const char *filename) |
XMLError | LoadFile (FILE *) |
void | MarkInUse (XMLNode *) |
XMLComment * | NewComment (const char *comment) |
XMLDeclaration * | NewDeclaration (const char *text=0) |
XMLElement * | NewElement (const char *name) |
XMLText * | NewText (const char *text) |
XMLUnknown * | NewUnknown (const char *text) |
XMLError | Parse (const char *xml, size_t nBytes=(size_t)(-1)) |
void | Print (XMLPrinter *streamer=0) const |
void | PrintError () const |
A (trivial) utility function that prints the ErrorStr() to stdout. | |
bool | ProcessEntities () const |
XMLElement * | RootElement () |
const XMLElement * | RootElement () const |
XMLError | SaveFile (const char *filename, bool compact=false) |
XMLError | SaveFile (FILE *fp, bool compact=false) |
void | SetBOM (bool useBOM) |
virtual XMLNode * | ShallowClone (XMLDocument *) const |
virtual bool | ShallowEqual (const XMLNode *) const |
virtual XMLDocument * | ToDocument () |
Safely cast to a Document, or null. | |
virtual const XMLDocument * | ToDocument () const |
Whitespace | WhitespaceMode () const |
XMLDocument (bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE) | |
constructor | |
~XMLDocument () | |
Static Public Member Functions | |
static const char * | ErrorIDToName (XMLError errorID) |
Private Member Functions | |
template<class NodeType , int PoolElementSize> | |
NodeType * | CreateUnlinkedNode (MemPoolT< PoolElementSize > &pool) |
void | operator= (const XMLDocument &) |
void | Parse () |
void | PopDepth () |
void | PushDepth () |
void | SetError (XMLError error, int lineNum, const char *format,...) |
XMLDocument (const XMLDocument &) | |
Private Attributes | |
MemPoolT< sizeof(XMLAttribute) > | _attributePool |
char * | _charBuffer |
MemPoolT< sizeof(XMLComment) > | _commentPool |
MemPoolT< sizeof(XMLElement) > | _elementPool |
XMLError | _errorID |
int | _errorLineNum |
StrPair | _errorStr |
int | _parseCurLineNum |
int | _parsingDepth |
bool | _processEntities |
MemPoolT< sizeof(XMLText) > | _textPool |
DynArray< XMLNode *, 10 > | _unlinked |
Whitespace | _whitespaceMode |
bool | _writeBOM |
Static Private Attributes | |
static const char * | _errorNames [XML_ERROR_COUNT] |
Friends | |
class | XMLComment |
class | XMLDeclaration |
class | XMLElement |
class | XMLNode |
class | XMLText |
class | XMLUnknown |
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.
Definition at line 1650 of file tinyxml2.h.
tinyxml2::XMLDocument::XMLDocument | ( | bool | processEntities = true , |
Whitespace | whitespaceMode = PRESERVE_WHITESPACE |
||
) |
constructor
Definition at line 1998 of file tinyxml2.cpp.
Definition at line 2020 of file tinyxml2.cpp.
tinyxml2::XMLDocument::XMLDocument | ( | const XMLDocument & | ) | [private] |
bool tinyxml2::XMLDocument::Accept | ( | XMLVisitor * | visitor | ) | const [virtual] |
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();
Implements tinyxml2::XMLNode.
Definition at line 726 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::Clear | ( | ) |
Clear the document, resetting it to the initial state.
Definition at line 2039 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::ClearError | ( | ) | [inline] |
Definition at line 1811 of file tinyxml2.h.
NodeType * tinyxml2::XMLDocument::CreateUnlinkedNode | ( | MemPoolT< PoolElementSize > & | pool | ) | [inline, private] |
Definition at line 1920 of file tinyxml2.h.
void tinyxml2::XMLDocument::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.
Definition at line 2073 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::DeleteNode | ( | XMLNode * | node | ) |
Delete a node associated with this document. It will be unlinked from the DOM.
Reimplemented from tinyxml2::XMLNode.
Definition at line 2141 of file tinyxml2.cpp.
bool tinyxml2::XMLDocument::Error | ( | ) | const [inline] |
Return true if there was an error parsing the document.
Definition at line 1816 of file tinyxml2.h.
XMLError tinyxml2::XMLDocument::ErrorID | ( | ) | const [inline] |
Return the errorID.
Definition at line 1820 of file tinyxml2.h.
const char * tinyxml2::XMLDocument::ErrorIDToName | ( | XMLError | errorID | ) | [static] |
Definition at line 2347 of file tinyxml2.cpp.
int tinyxml2::XMLDocument::ErrorLineNum | ( | ) | const [inline] |
Return the line where the error occured, or zero if unknown.
Definition at line 1835 of file tinyxml2.h.
const char * tinyxml2::XMLDocument::ErrorName | ( | ) | const |
Definition at line 2366 of file tinyxml2.cpp.
const char * tinyxml2::XMLDocument::ErrorStr | ( | ) | const |
Returns a "long form" error description. A hopefully helpful diagnostic with location, line number, and/or additional info.
Definition at line 2355 of file tinyxml2.cpp.
bool tinyxml2::XMLDocument::HasBOM | ( | ) | const [inline] |
Returns true if this document has a leading Byte Order Mark of UTF8.
Definition at line 1732 of file tinyxml2.h.
char * tinyxml2::XMLDocument::Identify | ( | char * | p, |
XMLNode ** | node | ||
) |
Definition at line 656 of file tinyxml2.cpp.
XMLError tinyxml2::XMLDocument::LoadFile | ( | const char * | filename | ) |
Load an XML file from disk. Returns XML_SUCCESS (0) on success, or an errorID.
Definition at line 2159 of file tinyxml2.cpp.
XMLError tinyxml2::XMLDocument::LoadFile | ( | FILE * | fp | ) |
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.
Definition at line 2201 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::MarkInUse | ( | XMLNode * | node | ) |
Definition at line 2026 of file tinyxml2.cpp.
XMLComment * tinyxml2::XMLDocument::NewComment | ( | const char * | comment | ) |
Create a new Comment associated with this Document. The memory for the Comment is managed by the Document.
Definition at line 2094 of file tinyxml2.cpp.
XMLDeclaration * tinyxml2::XMLDocument::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"?>
Definition at line 2110 of file tinyxml2.cpp.
XMLElement * tinyxml2::XMLDocument::NewElement | ( | const char * | name | ) |
Create a new Element associated with this Document. The memory for the Element is managed by the Document.
Definition at line 2086 of file tinyxml2.cpp.
XMLText * tinyxml2::XMLDocument::NewText | ( | const char * | text | ) |
Create a new Text associated with this Document. The memory for the Text is managed by the Document.
Definition at line 2102 of file tinyxml2.cpp.
XMLUnknown * tinyxml2::XMLDocument::NewUnknown | ( | const char * | text | ) |
Create a new Unknown associated with this Document. The memory for the object is managed by the Document.
Definition at line 2118 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::operator= | ( | const XMLDocument & | ) | [private] |
XMLError tinyxml2::XMLDocument::Parse | ( | const char * | xml, |
size_t | nBytes = (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.
Definition at line 2277 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::Parse | ( | ) | [private] |
Definition at line 2371 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::PopDepth | ( | ) | [private] |
Definition at line 2395 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::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
Definition at line 2308 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::PrintError | ( | ) | const |
A (trivial) utility function that prints the ErrorStr() to stdout.
Definition at line 2361 of file tinyxml2.cpp.
bool tinyxml2::XMLDocument::ProcessEntities | ( | ) | const [inline] |
Definition at line 1722 of file tinyxml2.h.
void tinyxml2::XMLDocument::PushDepth | ( | ) | [private] |
Definition at line 2387 of file tinyxml2.cpp.
XMLElement* tinyxml2::XMLDocument::RootElement | ( | ) | [inline] |
Return the root element of DOM. Equivalent to FirstChildElement(). To get the first node, use FirstChild().
Definition at line 1744 of file tinyxml2.h.
const XMLElement* tinyxml2::XMLDocument::RootElement | ( | ) | const [inline] |
Definition at line 1747 of file tinyxml2.h.
XMLError tinyxml2::XMLDocument::SaveFile | ( | const char * | filename, |
bool | compact = false |
||
) |
Save the XML file to disk. Returns XML_SUCCESS (0) on success, or an errorID.
Definition at line 2247 of file tinyxml2.cpp.
XMLError tinyxml2::XMLDocument::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.
Definition at line 2266 of file tinyxml2.cpp.
void tinyxml2::XMLDocument::SetBOM | ( | bool | useBOM | ) | [inline] |
Sets whether to write the BOM when writing the file.
Definition at line 1737 of file tinyxml2.h.
void tinyxml2::XMLDocument::SetError | ( | XMLError | error, |
int | lineNum, | ||
const char * | format, | ||
... | |||
) | [private] |
Definition at line 2320 of file tinyxml2.cpp.
virtual XMLNode* tinyxml2::XMLDocument::ShallowClone | ( | XMLDocument * | document | ) | const [inline, virtual] |
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.
Implements tinyxml2::XMLNode.
Definition at line 1858 of file tinyxml2.h.
virtual bool tinyxml2::XMLDocument::ShallowEqual | ( | const XMLNode * | compare | ) | const [inline, virtual] |
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.
Implements tinyxml2::XMLNode.
Definition at line 1861 of file tinyxml2.h.
virtual XMLDocument* tinyxml2::XMLDocument::ToDocument | ( | ) | [inline, virtual] |
Safely cast to a Document, or null.
Reimplemented from tinyxml2::XMLNode.
Definition at line 1665 of file tinyxml2.h.
virtual const XMLDocument* tinyxml2::XMLDocument::ToDocument | ( | ) | const [inline, virtual] |
Reimplemented from tinyxml2::XMLNode.
Definition at line 1669 of file tinyxml2.h.
Whitespace tinyxml2::XMLDocument::WhitespaceMode | ( | ) | const [inline] |
Definition at line 1725 of file tinyxml2.h.
friend class XMLComment [friend] |
Definition at line 1657 of file tinyxml2.h.
friend class XMLDeclaration [friend] |
Definition at line 1658 of file tinyxml2.h.
friend class XMLElement [friend] |
Reimplemented from tinyxml2::XMLNode.
Definition at line 1652 of file tinyxml2.h.
friend class XMLNode [friend] |
Definition at line 1655 of file tinyxml2.h.
friend class XMLText [friend] |
Definition at line 1656 of file tinyxml2.h.
friend class XMLUnknown [friend] |
Definition at line 1659 of file tinyxml2.h.
MemPoolT< sizeof(XMLAttribute) > tinyxml2::XMLDocument::_attributePool [private] |
Definition at line 1887 of file tinyxml2.h.
char* tinyxml2::XMLDocument::_charBuffer [private] |
Definition at line 1875 of file tinyxml2.h.
MemPoolT< sizeof(XMLComment) > tinyxml2::XMLDocument::_commentPool [private] |
Definition at line 1889 of file tinyxml2.h.
MemPoolT< sizeof(XMLElement) > tinyxml2::XMLDocument::_elementPool [private] |
Definition at line 1886 of file tinyxml2.h.
XMLError tinyxml2::XMLDocument::_errorID [private] |
Definition at line 1871 of file tinyxml2.h.
int tinyxml2::XMLDocument::_errorLineNum [private] |
Definition at line 1874 of file tinyxml2.h.
const char * tinyxml2::XMLDocument::_errorNames [static, private] |
{ "XML_SUCCESS", "XML_NO_ATTRIBUTE", "XML_WRONG_ATTRIBUTE_TYPE", "XML_ERROR_FILE_NOT_FOUND", "XML_ERROR_FILE_COULD_NOT_BE_OPENED", "XML_ERROR_FILE_READ_ERROR", "UNUSED_XML_ERROR_ELEMENT_MISMATCH", "XML_ERROR_PARSING_ELEMENT", "XML_ERROR_PARSING_ATTRIBUTE", "UNUSED_XML_ERROR_IDENTIFYING_TAG", "XML_ERROR_PARSING_TEXT", "XML_ERROR_PARSING_CDATA", "XML_ERROR_PARSING_COMMENT", "XML_ERROR_PARSING_DECLARATION", "XML_ERROR_PARSING_UNKNOWN", "XML_ERROR_EMPTY_DOCUMENT", "XML_ERROR_MISMATCHED_ELEMENT", "XML_ERROR_PARSING", "XML_CAN_NOT_CONVERT_TEXT", "XML_NO_TEXT_NODE", "XML_ELEMENT_DEPTH_EXCEEDED" }
Definition at line 1891 of file tinyxml2.h.
StrPair tinyxml2::XMLDocument::_errorStr [mutable, private] |
Definition at line 1873 of file tinyxml2.h.
int tinyxml2::XMLDocument::_parseCurLineNum [private] |
Definition at line 1876 of file tinyxml2.h.
int tinyxml2::XMLDocument::_parsingDepth [private] |
Definition at line 1877 of file tinyxml2.h.
bool tinyxml2::XMLDocument::_processEntities [private] |
Definition at line 1870 of file tinyxml2.h.
MemPoolT< sizeof(XMLText) > tinyxml2::XMLDocument::_textPool [private] |
Definition at line 1888 of file tinyxml2.h.
DynArray<XMLNode*, 10> tinyxml2::XMLDocument::_unlinked [private] |
Definition at line 1884 of file tinyxml2.h.
Definition at line 1872 of file tinyxml2.h.
bool tinyxml2::XMLDocument::_writeBOM [private] |
Definition at line 1869 of file tinyxml2.h.