#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/sax2/DefaultHandler.hpp>
#include<xercesc/sax2/XMLReaderFactory.hpp>
class SchemaErrorHandler : public DefaultHandler
{
public:
SchemaErrorHandler() {}
~SchemaErrorHandler() {}
void warning(const SAXParseException& exc)
{
XMLFileLoc nLineNumber = exc.getLineNumber();
XMLFileLoc nColumnNumber = exc.getColumnNumber();
const XMLCh* strMsg = exc.getMessage();
int yyy = 66;
}
void error(const SAXParseException& exc)
{
XMLFileLoc nLineNumber = exc.getLineNumber();
XMLFileLoc nColumnNumber = exc.getColumnNumber();
const XMLCh* strMsg = exc.getMessage();
int yyy = 66;
}
void fatalError(const SAXParseException& exc)
{
XMLFileLoc nLineNumber = exc.getLineNumber();
XMLFileLoc nColumnNumber = exc.getColumnNumber();
const XMLCh* strMsg = exc.getMessage();
int yyy = 66;
}
void resetErrors()
{
printf("nothing\n");
}
};
int main(int argc, char* argv[])
{
XMLPlatformUtils::Initialize();
wchar_t *xmlPath = L"2.xml";
wchar_t *sxsdPath = L"2.xsd";
SchemaErrorHandler handler;
SAX2XMLReader * saxXmlParse = XMLReaderFactory::createXMLReader();
saxXmlParse->setFeature(XMLUni::fgSAX2CoreValidation, true);
saxXmlParse->setFeature(XMLUni::fgXercesSchema, true);
saxXmlParse->setFeature(XMLUni::fgXercesValidationErrorAsFatal, true);
saxXmlParse->setFeature(XMLUni::fgXercesContinueAfterFatalError, false);
saxXmlParse->setProperty(XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation, sxsdPath);
saxXmlParse->setContentHandler(&handler);
saxXmlParse->setErrorHandler(&handler);
try
{
saxXmlParse->parse(xmlPath);
}
catch (SAXException& e)
{
printf("msg:%s\n", XMLString::transcode(e.getMessage()));
return -2;
}
catch (XMLException& e)
{
printf("code:%d, msg:%s\n", e.getCode(), XMLString::transcode(e.getMessage()));
return -3;
}
catch (DOMException& e)
{
printf("code:%d, msg:%s\n", e.code, e.msg);
return -4;
}
XMLPlatformUtils::Terminate();
return 0;
}