This class is used along with XMLEntityResolver to resolve entities. Instead of passing publicId and systemId on the resolveEntity call, as is done with the SAX entity resolver, an object of type XMLResourceIdentifier is passed. By calling the getResourceIdentifierType() method the user can determine which data members are available for inspection:
ResourceIdentifierType | Available Data Members |
SchemaGrammar | schemaLocation, nameSpace & baseURI (current document) |
SchemaImport | schemaLocation, nameSpace & baseURI (current document) |
SchemaInclude | schemaLocation & baseURI (current document) |
SchemaRedefine | schemaLocation & baseURI (current document) |
ExternalEntity | systemId, publicId & baseURI (some items may be NULL) |
The following resolver would provide the application with a special character stream for the entity with the system identifier "http://www.myhost.com/today":
#include <xercesc/util/XMLEntityResolver.hpp>
#include <xercesc/sax/InputSource.hpp>
class MyResolver : public XMLEntityResolver {
public:
InputSource* resolveEntity (XMLResourceIdentifier* xmlri);
...
};
MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
switch(xmlri->getResourceIdentifierType()) {
case XMLResourceIdentifier::SystemId:
if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
MyReader* reader = new MyReader();
return new InputSource(reader);
} else {
return null;
}
break;
default:
return null;
}
}
- See Also
- SAXParser::setXMLEntityResolver
-
InputSource::InputSource