1
0
mirror of https://github.com/leethomason/tinyxml2.git synced 2026-07-21 19:23:00 +04:00

Optional apos escaping

This commit is contained in:
Malcolm Tyrrell
2025-03-29 18:13:43 +00:00
parent 9148bdf719
commit 487f42aa69
2 changed files with 12 additions and 5 deletions
+3 -1
View File
@@ -2577,7 +2577,7 @@ void XMLDocument::PopDepth()
--_parsingDepth;
}
XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth, EscapeAposCharsInAttributes aposInAttributes ) :
_elementJustOpened( false ),
_stack(),
_firstElement( true ),
@@ -2594,10 +2594,12 @@ XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
}
for( int i=0; i<NUM_ENTITIES; ++i ) {
const char entityValue = entities[i].value;
if ((aposInAttributes == ESCAPE_APOS_CHARS_IN_ATTRIBUTES) || (entityValue != SINGLE_QUOTE)) {
const unsigned char flagIndex = static_cast<unsigned char>(entityValue);
TIXMLASSERT( flagIndex < ENTITY_RANGE );
_entityFlag[flagIndex] = true;
}
}
_restrictedEntityFlag[static_cast<unsigned char>('&')] = true;
_restrictedEntityFlag[static_cast<unsigned char>('<')] = true;
_restrictedEntityFlag[static_cast<unsigned char>('>')] = true; // not required, but consistency is nice
+6 -1
View File
@@ -2240,13 +2240,18 @@ private:
class TINYXML2_LIB XMLPrinter : public XMLVisitor
{
public:
enum EscapeAposCharsInAttributes {
ESCAPE_APOS_CHARS_IN_ATTRIBUTES,
DONT_ESCAPE_APOS_CHARS_IN_ATTRIBUTES
};
/** Construct the printer. If the FILE* is specified,
this will print to the FILE. Else it will print
to memory, and the result is available in CStr().
If 'compact' is set to true, then output is created
with only required whitespace and newlines.
*/
XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 );
XMLPrinter( FILE* file=0, bool compact = false, int depth = 0, EscapeAposCharsInAttributes aposInAttributes = ESCAPE_APOS_CHARS_IN_ATTRIBUTES );
virtual ~XMLPrinter() {}
/** If streaming, write the BOM and declaration. */