I am developing an Application which currently has two XML files. One
XML file with some nodes and an external entity reference to another
XML file. The source XML file is being parsed using Xerces (DOM
Parser), upon reaching an external entity reference node the external
file being referenced does not get parsed. Instead an empty node or the
current node name is substituted in place and the remaining nodes
parsed from original source file are seen in the output text file.
Source XML File: test.xml
<?xml version="1.0"?>
<!DOCTYPE doc [
<!ENTITY copyright SYSTEM "test2.xml">
]>
<doc>
<abc>xyz</abc>
<cop>©right;</cop>
<neha>morning</neha>
</doc>
External File: test2.xml
<copied>omg</copied>
Output:
<doc>
<abc>xyz</abc>
<cop>cop</cop>
<neha>morning</neha>
</doc>
Expected Output:
<doc>
<abc>xyz</abc>
<cop>
<copied>omg</copied>
</cop>
<neha>morning</neha>
</doc>
Questions:
An entity resolver was installed but resulted in similar output as
defined above.
User defined Entity Resolver (follows the Redirect sample from Xerces
documentation)
#include <xercesc/util/XercesDefs.hpp>
#include <xercesc/util/XMLResourceIdentifier.hpp>
#include <xercesc/util/XMLEntityResolver.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp>
Static const XMLCh module[] = {
chLatin_t,chLatin_e,chLatin_s,chLatin_t,chDigit_2, chPeriod,chLatin_x,chLatin_m,chLatin_l};
class My_Resolver:public xercesc_2_7::XMLEntityResolver
{
public:
InputSource * resolveEntity (XMLResourceIdentifier* xmlri)
{
xmlri->getSystemId();
return new LocalFileInputSource(module);
}
};
I have searched the API documentation and looked at the mail archive
but not found anything. Any help toward solving this problem would be
appreciated.
Thanks,
Neha.