title: SiteMap change SiteMapProvider?
body: <p>I've got a custom menu navigation built from a web.sitemap file, the first line of this would be something like:</p>
  
  <pre><code>SiteMapNodeCollection topLevelNodes = SiteMap.RootNode.ChildNodes;
  </code></pre>
  
  <p>This works - it gets all the top level nodes from the web.sitemap file, and allows me to look through each SiteMapNode and do stuff.</p>
  
  <p>However, now I want to be able to create multiple web.sitemap files, and then programmatically determine which web.sitemap file to use, but I can't seem to find out how to do this.  I'm assuming I could either create one custom SiteMapProvider that can perform the logic to determine which web.sitemap file to load, or I have multiple providers, each one with the SiteMapFile property set to a specific *.sitemap file, and then switch providers programmatically before I access SiteMap.RootNode.</p>
  
  <p>I think it's probably easier to have one custom provider, and then override the part where it looks for the actual physical sitemap file location, but I'm unclear how I would do this </p>
  
  <p>I've googled a lot, but most answers seem to be regarding the standard sitemappath controls and so on, and how to set a SiteMapDataSource, which I don't think is relevant to my approach.</p>