|
|
|
@ -552,7 +552,7 @@ namespace xml { |
|
|
|
|
if (nameRead) { // read attribute
|
|
|
|
|
std::string attrname(1, c), attrvalue; |
|
|
|
|
while (is && is.get(c) && c!='=' && c!='>' && !ws(c)) attrname+=c; |
|
|
|
|
while (c!='=' && is && is.get(c) && ws(c)); // skip ws, search '='
|
|
|
|
|
while (ws(c) && is && is.get(c)); // skip ws, search '='
|
|
|
|
|
if (c=='=') { // get the value
|
|
|
|
|
while (is && is.get(c) && ws(c)); // skip ws
|
|
|
|
|
if (c!='"') |
|
|
|
@ -560,7 +560,9 @@ namespace xml { |
|
|
|
|
while (is && is.get(c) && c!='"') attrvalue+=c; |
|
|
|
|
if (c!='"') |
|
|
|
|
throw attribute_value_not_quoted(position, is, tag, c, attrname); |
|
|
|
|
} else is.unget(); // read too far
|
|
|
|
|
} else { |
|
|
|
|
is.unget(); |
|
|
|
|
}// read too far
|
|
|
|
|
if (tag.attributes.find(attrname)!=tag.attributes.end()) |
|
|
|
|
throw duplicate_attribute(position, is, tag, attrname); |
|
|
|
|
tag.attributes[attrname] = attrvalue; |
|
|
|
|