[FEAT]: [XML]: Escaping
This commit is contained in:
@ -35,17 +35,50 @@ namespace IACore
|
|||||||
return IA_MOVE(doc);
|
return IA_MOVE(doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
String XML::SerializeToString(IN CONST Node &node)
|
String XML::SerializeToString(IN CONST Node &node, IN BOOL escape)
|
||||||
{
|
{
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
node.print(oss);
|
node.print(oss);
|
||||||
return oss.str();
|
return escape ? EscapeXMLString(oss.str()) : oss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
String XML::SerializeToString(IN CONST Document &doc)
|
String XML::SerializeToString(IN CONST Document &doc, IN BOOL escape)
|
||||||
{
|
{
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
doc.save(oss);
|
doc.save(oss);
|
||||||
return oss.str();
|
return escape ? EscapeXMLString(oss.str()) : oss.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
String XML::EscapeXMLString(IN CONST String &xml)
|
||||||
|
{
|
||||||
|
String buffer;
|
||||||
|
buffer.reserve(xml.size() + (xml.size() / 10));
|
||||||
|
|
||||||
|
for (char c : xml)
|
||||||
|
{
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case '&':
|
||||||
|
buffer.append("&");
|
||||||
|
break;
|
||||||
|
case '\"':
|
||||||
|
buffer.append(""");
|
||||||
|
break;
|
||||||
|
case '\'':
|
||||||
|
buffer.append("'");
|
||||||
|
break;
|
||||||
|
case '<':
|
||||||
|
buffer.append("<");
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
buffer.append(">");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
buffer.push_back(c);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer;
|
||||||
}
|
}
|
||||||
} // namespace IACore
|
} // namespace IACore
|
||||||
@ -31,7 +31,9 @@ namespace IACore
|
|||||||
STATIC Expected<Document, String> ParseFromString(IN CONST String &data);
|
STATIC Expected<Document, String> ParseFromString(IN CONST String &data);
|
||||||
STATIC Expected<Document, String> ParseFromFile(IN CONST FilePath &path);
|
STATIC Expected<Document, String> ParseFromFile(IN CONST FilePath &path);
|
||||||
|
|
||||||
STATIC String SerializeToString(IN CONST Node &node);
|
STATIC String SerializeToString(IN CONST Node &node, IN BOOL escape = false);
|
||||||
STATIC String SerializeToString(IN CONST Document &doc);
|
STATIC String SerializeToString(IN CONST Document &doc, IN BOOL escape = false);
|
||||||
|
|
||||||
|
STATIC String EscapeXMLString(IN CONST String &xml);
|
||||||
};
|
};
|
||||||
} // namespace IACore
|
} // namespace IACore
|
||||||
Reference in New Issue
Block a user