- attempt to look for corrupt XML data
This commit is contained in:
parent
35925a98a6
commit
a9534e727e
|
@ -89,19 +89,19 @@ XmlNode *XmlIo::load(const string &path){
|
||||||
|
|
||||||
try{
|
try{
|
||||||
ErrorHandler errorHandler;
|
ErrorHandler errorHandler;
|
||||||
#if XERCES_VERSION_MAJOR < 3
|
#if XERCES_VERSION_MAJOR < 3
|
||||||
DOMBuilder *parser= (static_cast<DOMImplementationLS*>(implementation))->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
|
DOMBuilder *parser= (static_cast<DOMImplementationLS*>(implementation))->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
|
||||||
parser->setErrorHandler(&errorHandler);
|
parser->setErrorHandler(&errorHandler);
|
||||||
parser->setFeature(XMLUni::fgXercesSchema, true);
|
parser->setFeature(XMLUni::fgXercesSchema, true);
|
||||||
parser->setFeature(XMLUni::fgXercesSchemaFullChecking, true);
|
parser->setFeature(XMLUni::fgXercesSchemaFullChecking, true);
|
||||||
parser->setFeature(XMLUni::fgDOMValidation, true);
|
parser->setFeature(XMLUni::fgDOMValidation, true);
|
||||||
#else
|
#else
|
||||||
DOMLSParser *parser = (static_cast<DOMImplementationLS*>(implementation))->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
|
DOMLSParser *parser = (static_cast<DOMImplementationLS*>(implementation))->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
|
||||||
DOMConfiguration *config = parser->getDomConfig();
|
DOMConfiguration *config = parser->getDomConfig();
|
||||||
config->setParameter(XMLUni::fgXercesSchema, true);
|
config->setParameter(XMLUni::fgXercesSchema, true);
|
||||||
config->setParameter(XMLUni::fgXercesSchemaFullChecking, true);
|
config->setParameter(XMLUni::fgXercesSchemaFullChecking, true);
|
||||||
config->setParameter(XMLUni::fgDOMValidate, true);
|
config->setParameter(XMLUni::fgDOMValidate, true);
|
||||||
#endif
|
#endif
|
||||||
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *document= parser->parseURI(path.c_str());
|
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *document= parser->parseURI(path.c_str());
|
||||||
|
|
||||||
if(document==NULL){
|
if(document==NULL){
|
||||||
|
@ -123,19 +123,19 @@ void XmlIo::save(const string &path, const XmlNode *node){
|
||||||
XMLCh str[strSize];
|
XMLCh str[strSize];
|
||||||
XMLString::transcode(node->getName().c_str(), str, strSize-1);
|
XMLString::transcode(node->getName().c_str(), str, strSize-1);
|
||||||
|
|
||||||
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *document= implementation->createDocument(0, str, 0);
|
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *document= implementation->createDocument(0, str, 0);
|
||||||
DOMElement *documentElement= document->getDocumentElement();
|
DOMElement *documentElement= document->getDocumentElement();
|
||||||
|
|
||||||
for(unsigned int i=0; i<node->getChildCount(); ++i){
|
for(unsigned int i=0; i<node->getChildCount(); ++i){
|
||||||
documentElement->appendChild(node->getChild(i)->buildElement(document));
|
documentElement->appendChild(node->getChild(i)->buildElement(document));
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalFileFormatTarget file(path.c_str());
|
LocalFileFormatTarget file(path.c_str());
|
||||||
#if XERCES_VERSION_MAJOR < 3
|
#if XERCES_VERSION_MAJOR < 3
|
||||||
DOMWriter* writer = implementation->createDOMWriter();
|
DOMWriter* writer = implementation->createDOMWriter();
|
||||||
writer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
|
writer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
|
||||||
writer->writeNode(&file, *document);
|
writer->writeNode(&file, *document);
|
||||||
#else
|
#else
|
||||||
DOMLSSerializer *serializer = implementation->createLSSerializer();
|
DOMLSSerializer *serializer = implementation->createLSSerializer();
|
||||||
DOMLSOutput* output=implementation->createLSOutput();
|
DOMLSOutput* output=implementation->createLSOutput();
|
||||||
DOMConfiguration* config=serializer->getDomConfig();
|
DOMConfiguration* config=serializer->getDomConfig();
|
||||||
|
@ -182,6 +182,10 @@ XmlTree::~XmlTree(){
|
||||||
|
|
||||||
XmlNode::XmlNode(DOMNode *node){
|
XmlNode::XmlNode(DOMNode *node){
|
||||||
|
|
||||||
|
if(node == NULL || node->getNodeName() == NULL) {
|
||||||
|
throw runtime_error("XML structure seems to be corrupt!");
|
||||||
|
}
|
||||||
|
|
||||||
//get name
|
//get name
|
||||||
char str[strSize];
|
char str[strSize];
|
||||||
XMLString::transcode(node->getNodeName(), str, strSize-1);
|
XMLString::transcode(node->getNodeName(), str, strSize-1);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user