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");
{
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();
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();
To copy to clipboard, switch view to plain text mode
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]);
}
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]);
}
To copy to clipboard, switch view to plain text mode
ScanXMLForObjects method code where bool isValid return false:
void
XmlLoader
::ScanXMLForObjects(QString filename, elementsMap
* mapToFill
){
QXmlSchemaValidator objectsTmlValidator(*mTmlSchema);
objectsTmlValidator.setMessageHandler(this);
QFile objectsFile
(filename
);
{
return;
}
if (!objectsDocument.setContent(&objectsFile))
{
objectsFile.close();
return;
}
bool isValid
= objectsTmlValidator.
validate(&objectsFile,
QUrl::fromLocalFile(objectsFile.
fileName()));
objectsFile.close();
objectsDocument.documentElement().firstChildElement().firstChildElement("Object");
while (!currentObjectElement.isNull())
{
(*mapToFill)[currentObjectElement.attribute("name").toStdString()] = currentObjectElement;
currentObjectElement = currentObjectElement.nextSiblingElement("Object");
}
}
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().firstChildElement().firstChildElement("Object");
while (!currentObjectElement.isNull())
{
(*mapToFill)[currentObjectElement.attribute("name").toStdString()] = currentObjectElement;
currentObjectElement = currentObjectElement.nextSiblingElement("Object");
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks