Use the VFS wrapper instead of Xerces' local file input source
This was SVN commit r383.
This commit is contained in:
parent
2c2b9ab71a
commit
9a9c0055dc
@ -2,15 +2,7 @@
|
||||
#include "ObjectManager.h"
|
||||
#include "CStr.h"
|
||||
|
||||
// xerces XML stuff
|
||||
#include <xercesc/dom/DOM.hpp>
|
||||
#include <xercesc/parsers/XercesDOMParser.hpp>
|
||||
#include <xercesc/framework/LocalFileInputSource.hpp>
|
||||
#include <xercesc/util/XMLString.hpp>
|
||||
#include <xercesc/util/PlatformUtils.hpp>
|
||||
|
||||
// Gee's custom error handler
|
||||
#include "ps/XercesErrorHandler.h"
|
||||
#include "XML.h"
|
||||
|
||||
// automatically use namespace ..
|
||||
XERCES_CPP_NAMESPACE_USE
|
||||
@ -59,15 +51,22 @@ bool CBaseEntity::loadXML( CStr filename )
|
||||
// Set customized error handler
|
||||
CXercesErrorHandler *errorHandler = new CXercesErrorHandler();
|
||||
parser->setErrorHandler(errorHandler);
|
||||
|
||||
CVFSEntityResolver *entityResolver = new CVFSEntityResolver(filename);
|
||||
parser->setEntityResolver(entityResolver);
|
||||
|
||||
// Get main node
|
||||
LocalFileInputSource source( XMLString::transcode(filename) );
|
||||
CVFSInputSource source;
|
||||
parseOK=source.OpenFile(filename)==0;
|
||||
|
||||
if (parseOK)
|
||||
{
|
||||
// Parse file
|
||||
parser->parse(source);
|
||||
|
||||
// Parse file
|
||||
parser->parse(source);
|
||||
|
||||
// Check how many errors
|
||||
parseOK = parser->getErrorCount() == 0;
|
||||
// Check how many errors
|
||||
parseOK = parser->getErrorCount() == 0;
|
||||
}
|
||||
|
||||
if (parseOK) {
|
||||
// parsed successfully - grab our data
|
||||
@ -75,7 +74,7 @@ bool CBaseEntity::loadXML( CStr filename )
|
||||
DOMElement *element = doc->getDocumentElement();
|
||||
|
||||
// root_name should be Object
|
||||
CStr root_name = XMLString::transcode( element->getNodeName() );
|
||||
CStr root_name = XMLTranscode( element->getNodeName() );
|
||||
|
||||
// should have at least 3 children - Name, ModelName and TextureName
|
||||
DOMNodeList *children = element->getChildNodes();
|
||||
@ -151,8 +150,9 @@ bool CBaseEntity::loadXML( CStr filename )
|
||||
}
|
||||
|
||||
}
|
||||
delete errorHandler;
|
||||
delete parser;
|
||||
delete errorHandler;
|
||||
delete entityResolver;
|
||||
}
|
||||
XMLPlatformUtils::Terminate();
|
||||
|
||||
|
@ -52,4 +52,4 @@ public:
|
||||
STL_HASH_MAP<CStr,CGenericProperty,CStr_hash_compare> m_properties;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -10,8 +10,8 @@ void CBaseEntityCollection::loadTemplates()
|
||||
Handle handle;
|
||||
vfsDirEnt dent;
|
||||
|
||||
CStr pathname = "mods/official/entities/templates/";
|
||||
handle=vfs_open_dir("entities/templates/");
|
||||
CStr pathname = "entities/templates/";
|
||||
handle=vfs_open_dir(pathname.c_str());
|
||||
if (handle > 0)
|
||||
{
|
||||
while (vfs_next_dirent(handle, &dent, ".xml") == 0)
|
||||
|
@ -291,4 +291,4 @@ void CEntity::render()
|
||||
void PASAPScenario()
|
||||
{
|
||||
// Got rid of all the hardcoding that was here.
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user