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