flowmaster
13th September 2010, 14:13
I have "Premateure end of document" error in at line 1 column 0 of my file, when try to validate it with XSD schema. I've tried to validate it in different software and online validators and they told me, that everything correct. So I decide, that file wasn't read correct, but it can't be cos I use it after validation. So maybe scheme wasn't reade correct? Please help me to find error.
it's part of constructor:
QFile tmlFile("..\\tml.xsd");
if (!tmlFile.open(QIODevice::ReadOnly))
{
Message::sendMessage(ERROR, "Can't find validation scheme!", "check if it's on it's place", true);
return;
}
mTmlSchema = new QXmlSchema();
if (!mTmlSchema->load(&tmlFile))
{
tmlFile.close();
Message::sendMessage(ERROR, "Validation scheme is'n valid", "use some software like Liquid XML studio to validate scheme and fix errors", true);
return;
}
ScanForObjects();
ScanForLevels();
tmlFile.close();
ScanForObjects method code:
void
XmlLoader::ScanForObjects()
{
ScanXMLForObjects("..\\Resources\\Objects.xml", &mMapsMap[GLOBAL]);
ScanXMLForObjects("..\\Resources\\LogicalObjects.xml", &mMapsMap[LOGICAL]);
ScanXMLForObjects("..\\Resources\\PhysicalObjects.xml", &mMapsMap[PHYSICAL]);
ScanXMLForObjects("..\\Resources\\GraphicalObjects.xml", &mMapsMap[GRAPHICAL]);
}
ScanXMLForObjects method code where bool isValid return false:
void
XmlLoader::ScanXMLForObjects(QString filename, elementsMap* mapToFill)
{
QXmlSchemaValidator objectsTmlValidator(*mTmlSchema);
objectsTmlValidator.setMessageHandler(this);
QDomDocument objectsDocument("Objects");
QFile objectsFile(filename);
if (!objectsFile.open(QIODevice::ReadWrite))
{
return;
}
if (!objectsDocument.setContent(&objectsFile))
{
objectsFile.close();
return;
}
bool isValid = objectsTmlValidator.validate(&objectsFile, QUrl::fromLocalFile(objectsFile.fileName()));
objectsFile.close();
QDomElement currentObjectElement =
objectsDocument.documentElement().firstChildElemen t().firstChildElement("Object");
while (!currentObjectElement.isNull())
{
(*mapToFill)[currentObjectElement.attribute("name").toStdString()] = currentObjectElement;
currentObjectElement = currentObjectElement.nextSiblingElement("Object");
}
}
it's part of constructor:
QFile tmlFile("..\\tml.xsd");
if (!tmlFile.open(QIODevice::ReadOnly))
{
Message::sendMessage(ERROR, "Can't find validation scheme!", "check if it's on it's place", true);
return;
}
mTmlSchema = new QXmlSchema();
if (!mTmlSchema->load(&tmlFile))
{
tmlFile.close();
Message::sendMessage(ERROR, "Validation scheme is'n valid", "use some software like Liquid XML studio to validate scheme and fix errors", true);
return;
}
ScanForObjects();
ScanForLevels();
tmlFile.close();
ScanForObjects method code:
void
XmlLoader::ScanForObjects()
{
ScanXMLForObjects("..\\Resources\\Objects.xml", &mMapsMap[GLOBAL]);
ScanXMLForObjects("..\\Resources\\LogicalObjects.xml", &mMapsMap[LOGICAL]);
ScanXMLForObjects("..\\Resources\\PhysicalObjects.xml", &mMapsMap[PHYSICAL]);
ScanXMLForObjects("..\\Resources\\GraphicalObjects.xml", &mMapsMap[GRAPHICAL]);
}
ScanXMLForObjects method code where bool isValid return false:
void
XmlLoader::ScanXMLForObjects(QString filename, elementsMap* mapToFill)
{
QXmlSchemaValidator objectsTmlValidator(*mTmlSchema);
objectsTmlValidator.setMessageHandler(this);
QDomDocument objectsDocument("Objects");
QFile objectsFile(filename);
if (!objectsFile.open(QIODevice::ReadWrite))
{
return;
}
if (!objectsDocument.setContent(&objectsFile))
{
objectsFile.close();
return;
}
bool isValid = objectsTmlValidator.validate(&objectsFile, QUrl::fromLocalFile(objectsFile.fileName()));
objectsFile.close();
QDomElement currentObjectElement =
objectsDocument.documentElement().firstChildElemen t().firstChildElement("Object");
while (!currentObjectElement.isNull())
{
(*mapToFill)[currentObjectElement.attribute("name").toStdString()] = currentObjectElement;
currentObjectElement = currentObjectElement.nextSiblingElement("Object");
}
}