1
0
forked from 0ad/0ad

Use the VFS wrapper instead of Xerces' local file input source

This was SVN commit r383.
This commit is contained in:
Simon Brenner 2004-06-03 13:27:01 +00:00
parent 2c2b9ab71a
commit 9a9c0055dc
4 changed files with 21 additions and 21 deletions

View File

@ -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();

View File

@ -52,4 +52,4 @@ public:
STL_HASH_MAP<CStr,CGenericProperty,CStr_hash_compare> m_properties;
};
#endif
#endif

View File

@ -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)

View File

@ -291,4 +291,4 @@ void CEntity::render()
void PASAPScenario()
{
// Got rid of all the hardcoding that was here.
}
}