Fixed a few small things.

This commit is contained in:
2023-06-20 09:29:16 -07:00
parent 0b26b5a06a
commit 0b3bae6e6c
8 changed files with 89 additions and 11 deletions

View File

@ -174,7 +174,41 @@ void Xml::load(Xml *xml, std::string data, size_t *j) {
buffer += bufferWhitespaces;
valueIsInWhitespace = false;
}
buffer += c;
if(c == '&') {
// Handle special characters. First read ahead to nearest semicolon OR
// nearest closing tag.
std::string sc;
while(c = data[i++]) {
xml->innerXml += c;
if(c == ';') break;
if(c == '<') assertUnreachable();//Invalid XML
sc += c;
}
if(valueIsInWhitespace) {
buffer += bufferWhitespaces;
valueIsInWhitespace = false;
}
if(sc == "lt") {
buffer += '<';
} else if(sc == "gt") {
buffer += '>';
} else if(sc == "amp") {
buffer += '&';
} else if(sc == "apos") {
buffer += '\'';
} else if(sc == "quot") {
buffer += '"';
} else {
// Unknown special char?
std::cout << "Unknown Special character: " << sc << std::endl;
assertUnreachable();
}
} else {
buffer += c;
}
}
break;