﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Interface IEntityResolver
   | Apache Lucene.NET 4.8.0-beta00013 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Interface IEntityResolver
   | Apache Lucene.NET 4.8.0-beta00013 Documentation ">
    <meta name="generator" content="docfx 2.56.2.0">
    
    <link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico">
    <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css">
    <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css">
    <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css">
    <meta property="docfx:navrel" content="toc.html">
    <meta property="docfx:tocrel" content="benchmark/toc.html">
    
    <meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/">
    
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <span id="forkongithub"><a href="https://github.com/apache/lucenenet" target="_blank">Fork me on GitHub</a></span>
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="/">
                <img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search">
            <ul class="level0 breadcrumb">
                <li>
                    <a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a>
                     <span id="breadcrumb">
                        <ul class="breadcrumb">
                          <li></li>
                        </ul>
                    </span>   
                </li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items">
            <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
          </div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Sax.IEntityResolver">
  
  
  <h1 id="Sax_IEntityResolver" data-uid="Sax.IEntityResolver" class="text-break">Interface IEntityResolver
  </h1>
  <div class="markdown level0 summary"><p>Basic interface for resolving entities.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Sax.html">Sax</a></h6>
  <h6><strong>Assembly</strong>: Lucene.Net.Benchmark.dll</h6>
  <h5 id="Sax_IEntityResolver_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public interface IEntityResolver</code></pre>
  </div>
  <h5 id="Sax_IEntityResolver_remarks"><strong>Remarks</strong></h5>
  <div class="markdown level0 remarks"><p><em>This module, both source code and documentation, is in the
Public Domain, and comes with<strong> NO WARRANTY</strong>.</em>
See<a href="http://www.saxproject.org">http://www.saxproject.org</a>
for further information.
<p>
If a SAX application needs to implement customized handling
for external entities, it must implement this interface and
register an instance with the SAX driver using the
<a class="xref" href="Sax.IXMLReader.html#Sax_IXMLReader_EntityResolver">EntityResolver</a>
property.
<p>
The XML reader will then allow the application to intercept any
external entities(including the external DTD subset and external
parameter entities, if any) before including them.
<p>
Many SAX applications will not need to implement this interface,
but it will be especially useful for applications that build
XML documents from databases or other specialised input sources,
or for applications that use URI types other than URLs.
<p>
The following resolver would provide the application
with a special character stream for the entity with the system
identifier &quot;<a href="http://www.myhost.com/today&amp;quot">http://www.myhost.com/today&quot</a>;:</p>
<pre><code>public class MyResolver : IEntityResolver 
{
    public InputSource ResolveEntity (string publicId, string systemId)
    {
        if (systemId.Equals(&quot;http://www.myhost.com/today&quot;, StringComparison.Ordinal))
        {
            // return a special input source
            MyReader reader = new MyReader();
            return new InputSource(reader);
        }
        else
        {
            // use the default behaviour
            return null;
        }
    }
}</code></pre>
<p><p>
The application can also use this interface to redirect system
identifiers to local URIs or to look up replacements in a catalog
(possibly by using the public identifier).</p>
</div>
  <h3 id="methods">Methods
  </h3>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00013/websites/apidocs/apiSpec/new?filename=Sax_IEntityResolver_ResolveEntity_System_String_System_String_.md&amp;value=---%0Auid%3A%20Sax.IEntityResolver.ResolveEntity(System.String%2CSystem.String)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/NightOwl888/lucenenet/blob/fix/apidocs-layout/src/Lucene.Net.Benchmark/Support/Sax/EntityResolver.cs/#L108">View Source</a>
  </span>
  <a id="Sax_IEntityResolver_ResolveEntity_" data-uid="Sax.IEntityResolver.ResolveEntity*"></a>
  <h4 id="Sax_IEntityResolver_ResolveEntity_System_String_System_String_" data-uid="Sax.IEntityResolver.ResolveEntity(System.String,System.String)">ResolveEntity(String, String)</h4>
  <div class="markdown level1 summary"><p>Allow the application to resolve external entities.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">InputSource ResolveEntity(string publicId, string systemId)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">publicId</span></td>
        <td><p>The public identifier of the external entity
being referenced, or null if none was supplied.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">systemId</span></td>
        <td><p>The system identifier of the external entity
being referenced.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Sax.InputSource.html">InputSource</a></td>
        <td><p>An InputSource object describing the new input source,
or null to request that the parser open a regular
URI connection to the system identifier.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 id="Sax_IEntityResolver_ResolveEntity_System_String_System_String__remarks">Remarks</h5>
  <div class="markdown level1 remarks"><p>The parser will call this method before opening any external
entity except the top-level document entity.Such entities include
the external DTD subset and external parameter entities referenced
within the DTD(in either case, only if the parser reads external
parameter entities), and external general entities referenced
within the document element(if the parser reads external general
entities).  The application may request that the parser locate
the entity itself, that it use an alternative URI, or that it
use data provided by the application(as a character or byte
input stream).
<p>
Application writers can use this method to redirect external
system identifiers to secure and/or local URIs, to look up
public identifiers in a catalogue, or to read an entity from a
database or other input source(including, for example, a dialog
box).  Neither XML nor SAX specifies a preferred policy for using
public or system IDs to resolve resources.However, SAX specifies
how to interpret any InputSource returned by this method, and that
if none is returned, then the system ID will be dereferenced as
a URL.
<p>
If the system identifier is a URL, the SAX parser must
resolve it fully before reporting it to the application.</p>
</div>
  <h5 class="exceptions">Exceptions</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Condition</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Sax.SAXException.html">SAXException</a></td>
        <td><p>Any SAX exception, possibly wrapping another exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IO.IOException</span></td>
        <td><p>A .NET-specific IO exception, possibly the result of creating 
a new <span class="xref">System.IO.Stream</span> or <span class="xref">System.IO.TextReader</span> for the <a class="xref" href="Sax.InputSource.html">InputSource</a>.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 id="Sax_IEntityResolver_ResolveEntity_System_String_System_String__seealso">See Also</h5>
  <div class="seealso">
      <div><a class="xref" href="Sax.InputSource.html">InputSource</a></div>
  </div>
  <h3 id="seealso">See Also</h3>
  <div class="seealso">
      <div><a class="xref" href="Sax.IXMLReader.html#Sax_IXMLReader_EntityResolver">EntityResolver</a></div>
      <div><a class="xref" href="Sax.InputSource.html">InputSource</a></div>
  </div>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <div class="contribution">
                <ul class="nav">
                  <li>
                    <a href="https://github.com/apache/lucenenet/new/docs/4.8.0-beta00013/websites/apidocs/apiSpec/new?filename=Sax_IEntityResolver.md&amp;value=---%0Auid%3A%20Sax.IEntityResolver%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" class="contribution-link">Improve this Doc</a>
                  </li>
                  <li>
                    <a href="https://github.com/apache/lucenenet/blob/fix/apidocs-layout/src/Lucene.Net.Benchmark/Support/Sax/EntityResolver.cs/#L67" class="contribution-link">View Source</a>
                  </li>
                </ul>
              </div>
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            Copyright © 2020 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script>
    <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script>
  </body>
</html>
