9#include <QXmlStreamReader>
29 bool parse(QIODevice *device);
57 return m_d->
parse(device);
78 LDEBUG <<
"XmlPropertyReaderPrivate::parse";
81 if (
m_reader.readNextStartElement()) {
82 if (
m_reader.name() == QLatin1String(
"Linguistic_codes"))
88 m_reader.raiseError(QObject::tr(
"The file is not a LIMA XML linguistic properties codes file."));
106 LTRACE <<
"XmlPropertyReaderPrivate::readLinguisticCodes" <<
m_reader.name();
107 Q_ASSERT(
m_reader.isStartElement() &&
m_reader.name() == QLatin1String(
"Linguistic_codes"));
109 while (
m_reader.readNextStartElement())
111 if (
m_reader.name() == QLatin1String(
"property"))
113 else if (
m_reader.name() == QLatin1String(
"subproperty"))
116 m_reader.raiseError(QObject::tr(
"Expected a property or subproperty but got a %1.").arg(
m_reader.name()));
119 LTRACE <<
"XmlPropertyReaderPrivate::readLinguisticCodes OUT";
131 LTRACE <<
"XmlPropertyReaderPrivate::readProperty" <<
m_reader.name() <<
m_reader.attributes().value(
"name");
133 Q_ASSERT(
m_reader.isStartElement() &&
m_reader.name() == QLatin1String(
"property"));
136 while (
m_reader.readNextStartElement())
138 if (
m_reader.name() == QLatin1String(
"value"))
141 m_reader.raiseError(QObject::tr(
"Expected a value but got a %1.").arg(
m_reader.name()));
144 LTRACE <<
"XmlPropertyReaderPrivate::readProperty OUT";
153 LTRACE <<
"XmlPropertyReaderPrivate::readValue" <<
m_reader.name() <<
m_reader.attributes().value(
"name");
155 Q_ASSERT(
m_reader.isStartElement() &&
m_reader.name() == QLatin1String(
"value"));
156 auto value =
m_reader.attributes().value(
"name").toString().toStdString();
160 LTRACE <<
"XmlPropertyReaderPrivate::readValue OUT";
174 LTRACE <<
"XmlPropertyReaderPrivate::readSubProperty" <<
m_reader.name() <<
m_reader.attributes().value(
"name");
176 Q_ASSERT(
m_reader.isStartElement() &&
m_reader.name() == QLatin1String(
"subproperty"));
183 while (
m_reader.readNextStartElement()) {
184 if (
m_reader.name() == QLatin1String(
"subvalues"))
187 m_reader.raiseError(QObject::tr(
"Expected a subvalues but got a %1.").arg(
m_reader.name()));
199 LTRACE <<
"XmlPropertyReaderPrivate::readSubValues" <<
m_reader.name();
201 Q_ASSERT(
m_reader.isStartElement() &&
m_reader.name() == QLatin1String(
"subvalues"));
202 auto value =
m_reader.attributes().value(
"value").toString().toStdString();
204 LDEBUG <<
"XmlPropertyReaderPrivate::readSubValues" << value;
206 m_subproperties.back().values.push_back(make_pair(value, std::vector<std::string>()));
207 while (
m_reader.readNextStartElement()) {
208 if (
m_reader.name() == QLatin1String(
"value"))
211 m_reader.raiseError(QObject::tr(
"Expected a subvalues but got a %1.").arg(
m_reader.name()));
220 LTRACE <<
"XmlPropertyReaderPrivate::readSubValue" <<
m_reader.name();
222 Q_ASSERT(
m_reader.isStartElement() &&
m_reader.name() == QLatin1String(
"value"));
223 auto value =
m_reader.attributes().value(
"name").toString();
226 LDEBUG <<
"XmlPropertyReaderPrivate::readSubValue" << value;
228 m_subproperties.back().values.back().second.push_back(value.toStdString());
235 auto errorStr = QObject::tr(
"%1, Line %2, column %3")
#define PROPERTYCODELOGINIT
XmlPropertyReaderPrivate()
QXmlStreamReader m_reader
std::vector< XmlPropertyReader::SubPropertyDescription > m_subproperties
~XmlPropertyReaderPrivate()=default
std::vector< XmlPropertyReader::PropertyDescription > m_properties
bool parse(QIODevice *device)
void readLinguisticCodes()
const std::vector< PropertyDescription > & getProperties()
bool parse(QIODevice *device)
QString errorString() const
const std::vector< SubPropertyDescription > & getSubProperties()