Fixed a few small things.
This commit is contained in:
@ -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;
|
||||
|
Reference in New Issue
Block a user