org.apache.solr.util
Class SystemIdResolver
java.lang.Object
org.apache.solr.util.SystemIdResolver
- All Implemented Interfaces:
- EntityResolver, EntityResolver2
public final class SystemIdResolver
- extends Object
- implements EntityResolver, EntityResolver2
This is a helper class to support resolving of XIncludes or other hrefs
inside XML files on top of a 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);
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
RESOURCE_LOADER_URI_SCHEME
public static final String RESOURCE_LOADER_URI_SCHEME
- See Also:
- Constant Field Values
RESOURCE_LOADER_AUTHORITY_ABSOLUTE
public static final String RESOURCE_LOADER_AUTHORITY_ABSOLUTE
- See Also:
- Constant Field Values
SystemIdResolver
public SystemIdResolver(ResourceLoader loader)
asEntityResolver
public EntityResolver asEntityResolver()
asURIResolver
public URIResolver asURIResolver()
asXMLResolver
public XMLResolver asXMLResolver()
getExternalSubset
public InputSource getExternalSubset(String name,
String baseURI)
- Specified by:
getExternalSubset
in interface EntityResolver2
resolveEntity
public InputSource resolveEntity(String name,
String publicId,
String baseURI,
String systemId)
throws IOException
- Specified by:
resolveEntity
in interface EntityResolver2
- Throws:
IOException
resolveEntity
public InputSource resolveEntity(String publicId,
String systemId)
throws IOException
- Specified by:
resolveEntity
in interface EntityResolver
- Throws:
IOException
createSystemIdFromResourceName
public static String createSystemIdFromResourceName(String name)
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.