public final class SystemIdResolver
extends java.lang.Object
implements org.xml.sax.EntityResolver, org.xml.sax.ext.EntityResolver2
ResourceLoader. Just plug this class
on top of a ResourceLoader and pass it as EntityResolver to SAX parsers
or via wrapper methods as URIResolver to XSL transformers or XMLResolver to STAX parsers.
The resolver handles special SystemIds with an URI scheme of solrres: that point
to resources. To produce such systemIds when you initially call the parser, use
createSystemIdFromResourceName(java.lang.String) which produces a SystemId that can
be included along the InputStream coming from ResourceLoader.openResource(java.lang.String).
In general create the InputSource to be passed to the parser like:
InputSource is = new InputSource(loader.openSchema(name)); is.setSystemId(SystemIdResolver.createSystemIdFromResourceName(name)); final DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); db.setEntityResolver(new SystemIdResolver(loader)); Document doc = db.parse(is);
| Modifier and Type | Field and Description |
|---|---|
private ResourceLoader |
loader |
private static org.slf4j.Logger |
log |
static java.lang.String |
RESOURCE_LOADER_AUTHORITY_ABSOLUTE |
static java.lang.String |
RESOURCE_LOADER_URI_SCHEME |
| Constructor and Description |
|---|
SystemIdResolver(ResourceLoader loader) |
| Modifier and Type | Method and Description |
|---|---|
org.xml.sax.EntityResolver |
asEntityResolver() |
javax.xml.transform.URIResolver |
asURIResolver() |
javax.xml.stream.XMLResolver |
asXMLResolver() |
static java.lang.String |
createSystemIdFromResourceName(java.lang.String name) |
org.xml.sax.InputSource |
getExternalSubset(java.lang.String name,
java.lang.String baseURI) |
org.xml.sax.InputSource |
resolveEntity(java.lang.String publicId,
java.lang.String systemId) |
org.xml.sax.InputSource |
resolveEntity(java.lang.String name,
java.lang.String publicId,
java.lang.String baseURI,
java.lang.String systemId) |
(package private) java.net.URI |
resolveRelativeURI(java.lang.String baseURI,
java.lang.String systemId) |
private static final org.slf4j.Logger log
public static final java.lang.String RESOURCE_LOADER_URI_SCHEME
public static final java.lang.String RESOURCE_LOADER_AUTHORITY_ABSOLUTE
private final ResourceLoader loader
public SystemIdResolver(ResourceLoader loader)
public org.xml.sax.EntityResolver asEntityResolver()
public javax.xml.transform.URIResolver asURIResolver()
public javax.xml.stream.XMLResolver asXMLResolver()
java.net.URI resolveRelativeURI(java.lang.String baseURI,
java.lang.String systemId)
throws java.io.IOException,
java.net.URISyntaxException
java.io.IOExceptionjava.net.URISyntaxExceptionpublic org.xml.sax.InputSource getExternalSubset(java.lang.String name,
java.lang.String baseURI)
getExternalSubset in interface org.xml.sax.ext.EntityResolver2public org.xml.sax.InputSource resolveEntity(java.lang.String name,
java.lang.String publicId,
java.lang.String baseURI,
java.lang.String systemId)
throws java.io.IOException
resolveEntity in interface org.xml.sax.ext.EntityResolver2java.io.IOExceptionpublic org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
java.lang.String systemId)
throws java.io.IOException
resolveEntity in interface org.xml.sax.EntityResolverjava.io.IOExceptionpublic static java.lang.String createSystemIdFromResourceName(java.lang.String name)