#include <tinyxml.h>
Public Member Functions | |
TiXmlPrinter () | |
virtual bool | VisitEnter (const TiXmlDocument &doc) |
Visit a document. | |
virtual bool | VisitExit (const TiXmlDocument &doc) |
Visit a document. | |
virtual bool | VisitEnter (const TiXmlElement &element, const TiXmlAttribute *firstAttribute) |
Visit an element. | |
virtual bool | VisitExit (const TiXmlElement &element) |
Visit an element. | |
virtual bool | Visit (const TiXmlDeclaration &declaration) |
Visit a declaration. | |
virtual bool | Visit (const TiXmlText &text) |
Visit a text node. | |
virtual bool | Visit (const TiXmlComment &comment) |
Visit a comment node. | |
virtual bool | Visit (const TiXmlUnknown &unknown) |
Visit an unknow node. | |
void | SetIndent (const char *_indent) |
const char * | Indent () |
Query the indention string. | |
void | SetLineBreak (const char *_lineBreak) |
const char * | LineBreak () |
Query the current line breaking string. | |
void | SetStreamPrinting () |
const char * | CStr () |
Return the result. | |
vcl_size_t | Size () |
Return the length of the result string. | |
const std::string & | Str () |
Return the result. |
Print to memory functionality. The TiXmlPrinter is useful when you need to:
When constructed, the TiXmlPrinter is in its default "pretty printing" mode. Before calling Accept() you can call methods to control the printing of the XML document. After TiXmlNode::Accept() is called, the printed document can be accessed via the CStr(), Str(), and Size() methods.
TiXmlPrinter uses the Visitor API.
TiXmlPrinter printer; printer.SetIndent( "\t" ); doc.Accept( &printer ); fprintf( stdout, "%s", printer.CStr() );
Definition at line 1735 of file tinyxml.h.
TiXmlPrinter::TiXmlPrinter | ( | ) | [inline] |
const char* TiXmlPrinter::CStr | ( | ) | [inline] |
const char* TiXmlPrinter::Indent | ( | ) | [inline] |
const char* TiXmlPrinter::LineBreak | ( | ) | [inline] |
void TiXmlPrinter::SetIndent | ( | const char * | _indent ) | [inline] |
void TiXmlPrinter::SetLineBreak | ( | const char * | _lineBreak ) | [inline] |
void TiXmlPrinter::SetStreamPrinting | ( | ) | [inline] |
Switch over to "stream printing" which is the most dense formatting without linebreaks. Common when the XML is needed for network transmission.
Definition at line 1769 of file tinyxml.h.
Referenced by operator<<().
{ indent = ""; lineBreak = ""; }
vcl_size_t TiXmlPrinter::Size | ( | void | ) | [inline] |
const std::string& TiXmlPrinter::Str | ( | ) | [inline] |
Return the result.
Definition at line 1779 of file tinyxml.h.
Referenced by operator<<().
{ return buffer; }
bool TiXmlPrinter::Visit | ( | const TiXmlUnknown & | ) | [virtual] |
Visit an unknow node.
Reimplemented from TiXmlVisitor.
Definition at line 1830 of file tinyxml.cpp.
References TiXmlNode::Value().
{ DoIndent(); buffer += "<"; buffer += unknown.Value(); buffer += ">"; DoLineBreak(); return true; }
bool TiXmlPrinter::Visit | ( | const TiXmlComment & | ) | [virtual] |
Visit a comment node.
Reimplemented from TiXmlVisitor.
Definition at line 1819 of file tinyxml.cpp.
References TiXmlNode::Value().
{ DoIndent(); buffer += "<!--"; buffer += comment.Value(); buffer += "-->"; DoLineBreak(); return true; }
bool TiXmlPrinter::Visit | ( | const TiXmlDeclaration & | ) | [virtual] |
Visit a declaration.
Reimplemented from TiXmlVisitor.
Definition at line 1810 of file tinyxml.cpp.
References TiXmlDeclaration::Print().
{ DoIndent(); declaration.Print( 0, 0, &buffer ); DoLineBreak(); return true; }
bool TiXmlPrinter::Visit | ( | const TiXmlText & | ) | [virtual] |
Visit a text node.
Reimplemented from TiXmlVisitor.
Definition at line 1782 of file tinyxml.cpp.
References TiXmlText::CDATA(), TiXmlBase::EncodeString(), TIXML_STRING, TiXmlNode::Value(), and TiXmlNode::ValueTStr().
{ if ( text.CDATA() ) { DoIndent(); buffer += "<![CDATA["; buffer += text.Value(); buffer += "]]>"; DoLineBreak(); } else if ( simpleTextPrint ) { TIXML_STRING str; TiXmlBase::EncodeString( text.ValueTStr(), &str ); buffer += str; } else { DoIndent(); TIXML_STRING str; TiXmlBase::EncodeString( text.ValueTStr(), &str ); buffer += str; DoLineBreak(); } return true; }
bool TiXmlPrinter::VisitEnter | ( | const TiXmlDocument & | ) | [virtual] |
Visit a document.
Reimplemented from TiXmlVisitor.
Definition at line 1709 of file tinyxml.cpp.
{ return true; }
bool TiXmlPrinter::VisitEnter | ( | const TiXmlElement & | , |
const TiXmlAttribute * | |||
) | [virtual] |
Visit an element.
Reimplemented from TiXmlVisitor.
Definition at line 1719 of file tinyxml.cpp.
References TiXmlText::CDATA(), TiXmlNode::FirstChild(), TiXmlNode::LastChild(), TiXmlAttribute::Next(), TiXmlNode::ToText(), and TiXmlNode::Value().
{ DoIndent(); buffer += "<"; buffer += element.Value(); for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) { buffer += " "; attrib->Print( 0, 0, &buffer ); } if ( !element.FirstChild() ) { buffer += " />"; DoLineBreak(); } else { buffer += ">"; if ( element.FirstChild()->ToText() && element.LastChild() == element.FirstChild() && element.FirstChild()->ToText()->CDATA() == false ) { simpleTextPrint = true; // no DoLineBreak()! } else { DoLineBreak(); } } ++depth; return true; }
bool TiXmlPrinter::VisitExit | ( | const TiXmlElement & | ) | [virtual] |
Visit an element.
Reimplemented from TiXmlVisitor.
Definition at line 1756 of file tinyxml.cpp.
References TiXmlNode::FirstChild(), and TiXmlNode::Value().
{ --depth; if ( !element.FirstChild() ) { // nothing. } else { if ( simpleTextPrint ) { simpleTextPrint = false; } else { DoIndent(); } buffer += "</"; buffer += element.Value(); buffer += ">"; DoLineBreak(); } return true; }
bool TiXmlPrinter::VisitExit | ( | const TiXmlDocument & | ) | [virtual] |
Visit a document.
Reimplemented from TiXmlVisitor.
Definition at line 1714 of file tinyxml.cpp.
{ return true; }