mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix xml escapes in attribute values
This commit is contained in:
parent
2c6cffcf19
commit
fc8065e550
1 changed files with 10 additions and 5 deletions
|
|
@ -208,6 +208,14 @@ namespace {
|
|||
class Parser : BasicParser<char> {
|
||||
std::unique_ptr<Document> document;
|
||||
|
||||
void processEscapes(std::string& text) {
|
||||
util::replaceAll(text, """, "\"");
|
||||
util::replaceAll(text, "'", "'");
|
||||
util::replaceAll(text, "<", "<");
|
||||
util::replaceAll(text, ">", ">");
|
||||
util::replaceAll(text, "&", "&");
|
||||
}
|
||||
|
||||
std::unique_ptr<Node> parseOpenTag() {
|
||||
std::string tag = parseXMLName();
|
||||
auto node = std::make_unique<Node>(tag);
|
||||
|
|
@ -230,6 +238,7 @@ class Parser : BasicParser<char> {
|
|||
}
|
||||
skip(1);
|
||||
attrtext = parseString(quote);
|
||||
processEscapes(attrtext);
|
||||
}
|
||||
node->set(attrname, attrtext);
|
||||
}
|
||||
|
|
@ -241,11 +250,7 @@ class Parser : BasicParser<char> {
|
|||
if (peek() != '<') {
|
||||
auto element = std::make_unique<Node>("#");
|
||||
auto text = parseText();
|
||||
util::replaceAll(text, """, "\"");
|
||||
util::replaceAll(text, "'", "'");
|
||||
util::replaceAll(text, "<", "<");
|
||||
util::replaceAll(text, ">", ">");
|
||||
util::replaceAll(text, "&", "&");
|
||||
processEscapes(text);
|
||||
element->set("#", text);
|
||||
return element;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue