XmlResolver.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XmlResolver.cs / 1305376 / XmlResolver.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace System.Xml 
{
    using System; 
    using System.IO;
    using System.Text;
    using System.Security;
    using System.Security.Permissions; 
#if !SILVERLIGHT
    using System.Net; 
#endif 
    using System.Runtime.Versioning;
 
    /// 
    /// 
    ///    Resolves external XML resources named by a Uniform
    ///       Resource Identifier (URI). This class is  
    ///       .
    ///  
    public abstract class XmlResolver { 
        /// 
        ///  
        ///    Maps a
        ///       URI to an Object containing the actual resource.
        /// 
 
        public abstract Object GetEntity(Uri absoluteUri,
                                         string role, 
                                         Type ofObjectToReturn); 

        ///  
        /// 
        ///    [To be supplied.]
        /// 
#if !SILVERLIGHT 
        [ResourceExposure(ResourceScope.Machine)]
        [ResourceConsumption(ResourceScope.Machine)] 
#endif 
        public virtual Uri ResolveUri(Uri baseUri, string relativeUri) {
            if ( baseUri == null || ( !baseUri.IsAbsoluteUri && baseUri.OriginalString.Length == 0 ) ) { 
                Uri uri = new Uri( relativeUri, UriKind.RelativeOrAbsolute );
#if !SILVERLIGHT // Path.GetFullPath is SecurityCritical
                if ( !uri.IsAbsoluteUri && uri.OriginalString.Length > 0 ) {
                    uri = new Uri( Path.GetFullPath( relativeUri ) ); 
                }
#endif 
                return uri; 
            }
            else { 
                if (relativeUri == null || relativeUri.Length == 0) {
                    return baseUri;
                }
                // relative base Uri 
                if ( !baseUri.IsAbsoluteUri ) {
#if SILVERLIGHT 
                    // create temporary base for the relative URIs 
                    Uri tmpBaseUri = new Uri("tmp:///");
 
                    // create absolute base URI with the temporary base
                    Uri absBaseUri = new Uri(tmpBaseUri, baseUri.OriginalString);

                    // resolve the relative Uri into a new absolute URI 
                    Uri resolvedAbsUri = new Uri(absBaseUri, relativeUri);
 
                    // make it relative by removing temporary base 
                    Uri resolvedRelUri = tmpBaseUri.MakeRelativeUri(resolvedAbsUri);
 
                    return resolvedRelUri;
#else
                    throw new NotSupportedException(Res.GetString(Res.Xml_RelativeUriNotSupported));
#endif 
                }
                return new Uri( baseUri, relativeUri ); 
            } 
        }
 
#if !SILVERLIGHT
        //UE attension
        /// 
        ///  
        ///    [To be supplied.]
        ///  
        public abstract ICredentials Credentials { 
            set;
        } 
#endif

        public virtual bool SupportsType(Uri absoluteUri, Type type) {
            if (absoluteUri == null) { 
                throw new ArgumentNullException("absoluteUri");
            } 
            if (type == null || type == typeof(Stream)) { 
                return true;
            } 
            return false;
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK