Hello,
I'm having problems using XercesDOMParser to parse a document with the
following prolog:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TCR_Root SYSTEM 'c:/template/TestCaseReport_V1.0.dtd'>
I set up the parser, call parse, and I end up with an exception:
xercesc_2_4::MalformedURLException.
My set up code:
static XercesDOMParser::ValSchemes gValScheme =
XercesDOMParser::Val_Auto;
. . .
String CDOMParser::searchTag(const char* sXmlFile, string sSearchedNode,
string sSearchedAttribute)
{
m_sSearchedNodeName = sSearchedNode;
m_sSearchedAttributeName = sSearchedAttribute;
m_sReturnSearchTag = "";
// Initialisation
gDoNamespaces = true;
gDoSchema = true;
gSchemaFullChecking = false;
gDoCreate = false;
CXercesInit oXercesInit;
XercesDOMParser *parser = new XercesDOMParser;
parser->setValidationScheme(gValScheme);
parser->setDoNamespaces(gDoNamespaces);
parser->setDoSchema(gDoSchema);
parser->setValidationSchemaFullChecking(gSchemaFullChecking);
parser->setCreateEntityReferenceNodes(gDoCreate);
CDOMTreeErrorReporter *errReporter = new CDOMTreeErrorReporter();
parser->setErrorHandler(errReporter);
try
{
parser->parse(sXmlFile);
}
. . .
I've followed xerces through with the MSVC7 debugger, and it would seem
that eventually ReaderMgr::createReader() tries to create an XMLURL using:
XMLURL::XMLURL(const XMLCh* const baseURL
, const XMLCh* const relativeURL
, MemoryManager* const manager)
baseURL == path to the document being parsed
relativeURL == path to the dtd
This constructor calls XMLURL::setURL(const XMLCh* const baseURL, const
XMLCh* const relativeURL)which calls XMLURL::parse(const XMLCh* const
urlText), which throws the exception when it sees urlText is a path. I've
tried adding 'file://' to the beginning of the path, but that just crashes
at the ':' trying to figure out port numbers. Relative paths don't work as
sometimes the app will be running from a different drive than the dtd is
on. Besides, even if the dtd is a relative path, I end up with exactly the
same problem later on with the document being parsed, after
LocalFileInputSource takes out the '..'s and puts in the d:\.
I'm really at a loss, and any help would be appreciated.
Thanks,
Adam Read
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]