Make the xml parser less strict about xml problems (#3567)
* Make the xml parser less strict about xml problems * clanfigy me harder
This commit is contained in:
parent
2703db75d0
commit
923b4acdbc
2 changed files with 35 additions and 31 deletions
|
@ -77,13 +77,14 @@ void CockatriceXml3Parser::loadSetsFromXml(QXmlStreamReader &xml)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xml.name() == "name") {
|
if (xml.name() == "name") {
|
||||||
shortName = xml.readElementText();
|
shortName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "longname") {
|
} else if (xml.name() == "longname") {
|
||||||
longName = xml.readElementText();
|
longName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "settype") {
|
} else if (xml.name() == "settype") {
|
||||||
setType = xml.readElementText();
|
setType = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "releasedate") {
|
} else if (xml.name() == "releasedate") {
|
||||||
releaseDate = QDate::fromString(xml.readElementText(), Qt::ISODate);
|
releaseDate =
|
||||||
|
QDate::fromString(xml.readElementText(QXmlStreamReader::IncludeChildElements), Qt::ISODate);
|
||||||
} else if (xml.name() != "") {
|
} else if (xml.name() != "") {
|
||||||
qDebug() << "[CockatriceXml3Parser] Unknown set property" << xml.name()
|
qDebug() << "[CockatriceXml3Parser] Unknown set property" << xml.name()
|
||||||
<< ", trying to continue anyway";
|
<< ", trying to continue anyway";
|
||||||
|
@ -154,43 +155,45 @@ void CockatriceXml3Parser::loadCardsFromXml(QXmlStreamReader &xml)
|
||||||
bool upsideDown = false;
|
bool upsideDown = false;
|
||||||
|
|
||||||
while (!xml.atEnd()) {
|
while (!xml.atEnd()) {
|
||||||
|
qDebug() << xml.name();
|
||||||
if (xml.readNext() == QXmlStreamReader::EndElement) {
|
if (xml.readNext() == QXmlStreamReader::EndElement) {
|
||||||
|
qDebug() << "end";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// variable - assigned properties
|
// variable - assigned properties
|
||||||
if (xml.name() == "name") {
|
if (xml.name() == "name") {
|
||||||
name = xml.readElementText();
|
name = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "text") {
|
} else if (xml.name() == "text") {
|
||||||
text = xml.readElementText();
|
text = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "color") {
|
} else if (xml.name() == "color") {
|
||||||
colors.append(xml.readElementText());
|
colors.append(xml.readElementText(QXmlStreamReader::IncludeChildElements));
|
||||||
} else if (xml.name() == "token") {
|
} else if (xml.name() == "token") {
|
||||||
isToken = static_cast<bool>(xml.readElementText().toInt());
|
isToken = static_cast<bool>(xml.readElementText(QXmlStreamReader::IncludeChildElements).toInt());
|
||||||
// generic properties
|
// generic properties
|
||||||
} else if (xml.name() == "manacost") {
|
} else if (xml.name() == "manacost") {
|
||||||
properties.insert("manacost", xml.readElementText());
|
properties.insert("manacost", xml.readElementText(QXmlStreamReader::IncludeChildElements));
|
||||||
} else if (xml.name() == "cmc") {
|
} else if (xml.name() == "cmc") {
|
||||||
properties.insert("cmc", xml.readElementText());
|
properties.insert("cmc", xml.readElementText(QXmlStreamReader::IncludeChildElements));
|
||||||
} else if (xml.name() == "type") {
|
} else if (xml.name() == "type") {
|
||||||
QString type = xml.readElementText();
|
QString type = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
properties.insert("type", type);
|
properties.insert("type", type);
|
||||||
properties.insert("maintype", getMainCardType(type));
|
properties.insert("maintype", getMainCardType(type));
|
||||||
} else if (xml.name() == "pt") {
|
} else if (xml.name() == "pt") {
|
||||||
properties.insert("pt", xml.readElementText());
|
properties.insert("pt", xml.readElementText(QXmlStreamReader::IncludeChildElements));
|
||||||
} else if (xml.name() == "loyalty") {
|
} else if (xml.name() == "loyalty") {
|
||||||
properties.insert("loyalty", xml.readElementText());
|
properties.insert("loyalty", xml.readElementText(QXmlStreamReader::IncludeChildElements));
|
||||||
// positioning info
|
// positioning info
|
||||||
} else if (xml.name() == "tablerow") {
|
} else if (xml.name() == "tablerow") {
|
||||||
tableRow = xml.readElementText().toInt();
|
tableRow = xml.readElementText(QXmlStreamReader::IncludeChildElements).toInt();
|
||||||
} else if (xml.name() == "cipt") {
|
} else if (xml.name() == "cipt") {
|
||||||
cipt = (xml.readElementText() == "1");
|
cipt = (xml.readElementText(QXmlStreamReader::IncludeChildElements) == "1");
|
||||||
} else if (xml.name() == "upsidedown") {
|
} else if (xml.name() == "upsidedown") {
|
||||||
upsideDown = (xml.readElementText() == "1");
|
upsideDown = (xml.readElementText(QXmlStreamReader::IncludeChildElements) == "1");
|
||||||
// sets
|
// sets
|
||||||
} else if (xml.name() == "set") {
|
} else if (xml.name() == "set") {
|
||||||
// NOTE: attributes must be read before readElementText()
|
// NOTE: attributes must be read before readElementText()
|
||||||
QXmlStreamAttributes attrs = xml.attributes();
|
QXmlStreamAttributes attrs = xml.attributes();
|
||||||
QString setName = xml.readElementText();
|
QString setName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
CardInfoPerSet setInfo(internalAddSet(setName));
|
CardInfoPerSet setInfo(internalAddSet(setName));
|
||||||
if (attrs.hasAttribute("muId")) {
|
if (attrs.hasAttribute("muId")) {
|
||||||
setInfo.setProperty("muid", attrs.value("muId").toString());
|
setInfo.setProperty("muid", attrs.value("muId").toString());
|
||||||
|
@ -219,7 +222,7 @@ void CockatriceXml3Parser::loadCardsFromXml(QXmlStreamReader &xml)
|
||||||
bool variable = false;
|
bool variable = false;
|
||||||
int count = 1;
|
int count = 1;
|
||||||
QXmlStreamAttributes attrs = xml.attributes();
|
QXmlStreamAttributes attrs = xml.attributes();
|
||||||
QString cardName = xml.readElementText();
|
QString cardName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
if (attrs.hasAttribute("count")) {
|
if (attrs.hasAttribute("count")) {
|
||||||
if (attrs.value("count").toString().indexOf("x=") == 0) {
|
if (attrs.value("count").toString().indexOf("x=") == 0) {
|
||||||
variable = true;
|
variable = true;
|
||||||
|
|
|
@ -77,13 +77,14 @@ void CockatriceXml4Parser::loadSetsFromXml(QXmlStreamReader &xml)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xml.name() == "name") {
|
if (xml.name() == "name") {
|
||||||
shortName = xml.readElementText();
|
shortName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "longname") {
|
} else if (xml.name() == "longname") {
|
||||||
longName = xml.readElementText();
|
longName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "settype") {
|
} else if (xml.name() == "settype") {
|
||||||
setType = xml.readElementText();
|
setType = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "releasedate") {
|
} else if (xml.name() == "releasedate") {
|
||||||
releaseDate = QDate::fromString(xml.readElementText(), Qt::ISODate);
|
releaseDate =
|
||||||
|
QDate::fromString(xml.readElementText(QXmlStreamReader::IncludeChildElements), Qt::ISODate);
|
||||||
} else if (xml.name() != "") {
|
} else if (xml.name() != "") {
|
||||||
qDebug() << "[CockatriceXml4Parser] Unknown set property" << xml.name()
|
qDebug() << "[CockatriceXml4Parser] Unknown set property" << xml.name()
|
||||||
<< ", trying to continue anyway";
|
<< ", trying to continue anyway";
|
||||||
|
@ -105,7 +106,7 @@ QVariantHash CockatriceXml4Parser::loadCardPropertiesFromXml(QXmlStreamReader &x
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xml.name() != "") {
|
if (xml.name() != "") {
|
||||||
properties.insert(xml.name().toString(), xml.readElementText());
|
properties.insert(xml.name().toString(), xml.readElementText(QXmlStreamReader::IncludeChildElements));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return properties;
|
return properties;
|
||||||
|
@ -135,26 +136,26 @@ void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml)
|
||||||
}
|
}
|
||||||
// variable - assigned properties
|
// variable - assigned properties
|
||||||
if (xml.name() == "name") {
|
if (xml.name() == "name") {
|
||||||
name = xml.readElementText();
|
name = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "text") {
|
} else if (xml.name() == "text") {
|
||||||
text = xml.readElementText();
|
text = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
} else if (xml.name() == "token") {
|
} else if (xml.name() == "token") {
|
||||||
isToken = static_cast<bool>(xml.readElementText().toInt());
|
isToken = static_cast<bool>(xml.readElementText(QXmlStreamReader::IncludeChildElements).toInt());
|
||||||
// generic properties
|
// generic properties
|
||||||
} else if (xml.name() == "prop") {
|
} else if (xml.name() == "prop") {
|
||||||
properties = loadCardPropertiesFromXml(xml);
|
properties = loadCardPropertiesFromXml(xml);
|
||||||
// positioning info
|
// positioning info
|
||||||
} else if (xml.name() == "tablerow") {
|
} else if (xml.name() == "tablerow") {
|
||||||
tableRow = xml.readElementText().toInt();
|
tableRow = xml.readElementText(QXmlStreamReader::IncludeChildElements).toInt();
|
||||||
} else if (xml.name() == "cipt") {
|
} else if (xml.name() == "cipt") {
|
||||||
cipt = (xml.readElementText() == "1");
|
cipt = (xml.readElementText(QXmlStreamReader::IncludeChildElements) == "1");
|
||||||
} else if (xml.name() == "upsidedown") {
|
} else if (xml.name() == "upsidedown") {
|
||||||
upsideDown = (xml.readElementText() == "1");
|
upsideDown = (xml.readElementText(QXmlStreamReader::IncludeChildElements) == "1");
|
||||||
// sets
|
// sets
|
||||||
} else if (xml.name() == "set") {
|
} else if (xml.name() == "set") {
|
||||||
// NOTE: attributes but be read before readElementText()
|
// NOTE: attributes but be read before readElementText()
|
||||||
QXmlStreamAttributes attrs = xml.attributes();
|
QXmlStreamAttributes attrs = xml.attributes();
|
||||||
QString setName = xml.readElementText();
|
QString setName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
CardInfoPerSet setInfo(internalAddSet(setName));
|
CardInfoPerSet setInfo(internalAddSet(setName));
|
||||||
for (QXmlStreamAttribute attr : attrs) {
|
for (QXmlStreamAttribute attr : attrs) {
|
||||||
setInfo.setProperty(attr.name().toString(), attr.value().toString());
|
setInfo.setProperty(attr.name().toString(), attr.value().toString());
|
||||||
|
@ -167,7 +168,7 @@ void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml)
|
||||||
bool variable = false;
|
bool variable = false;
|
||||||
int count = 1;
|
int count = 1;
|
||||||
QXmlStreamAttributes attrs = xml.attributes();
|
QXmlStreamAttributes attrs = xml.attributes();
|
||||||
QString cardName = xml.readElementText();
|
QString cardName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
if (attrs.hasAttribute("count")) {
|
if (attrs.hasAttribute("count")) {
|
||||||
if (attrs.value("count").toString().indexOf("x=") == 0) {
|
if (attrs.value("count").toString().indexOf("x=") == 0) {
|
||||||
variable = true;
|
variable = true;
|
||||||
|
|
Loading…
Reference in a new issue