⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filexmlresolver.cs

📁 C#实现DHTML编辑器功能!
💻 CS
字号:
// DINAMIC XML Editor
//
// Copyright (c) 2002-2003 Dusan Hlavaty
// mailto: duddo@atlas.cz
//
// This software is licensed under the terms of
// GNU General Public license
//
using System;
using System.IO;
using System.Net;
using System.Xml;

namespace XML_editor.Common
{
	/// <summary>
	/// Ziskava externe XML prostriedy podla zadaneho URI.
	/// </summary>
	public class FileXMLResolver : System.Xml.XmlResolver
	{

		// -------------------------------------------------------------------------
		/// <summary>
		/// Stream, ktory budeme vracat na poziadavky
		/// </summary>
		private Stream stream;

		// -------------------------------------------------------------------------
		/// <summary>
		/// Overridovana vlastnost, nastavuje nejake 'credentials' pre autorizaciu
		/// Web poziadaviek. Ja ju nepouzivam.
		/// </summary>
		public override ICredentials Credentials 
		{
			set 
			{
			}
		}
	
		// -------------------------------------------------------------------------
		/// <summary>
		/// Inicializuje instanciu <see cref="FileXMLResolver"/>
		/// </summary>
		/// <param name="stream"><see cref="Stream"/>, ktory budeme vracat na poziadavky</param>
		/// <param name="convertFromUnicodeToByte"><c>true</c> ak sa ma skonvertovat z
		/// UNICODU do jednobytoveho kodovania., inac <c>false</c></param>
		public FileXMLResolver(Stream stream, bool convertFromUnicodeToByte)
		{
			if (convertFromUnicodeToByte == true) 
			{
				this.stream = new MemoryStream( (int)(stream.Length/2) );
			
				int ch;
				bool x = false;

				while ((ch = stream.ReadByte()) != -1) 
				{
					if (x == true) 
					{
						this.stream.WriteByte( (byte)ch );
						System.Diagnostics.Debug.Write(ch.ToString());
					}
					x = !x;
				}
				this.stream.Seek(0, SeekOrigin.Begin);
			} 
			else 
			{
				this.stream = stream;
			}
		}
	
		// -------------------------------------------------------------------------
		/// <summary>
		/// Mapuje URI na objekt obsahujuci pozadovane prostriedky.
		/// </summary>
		/// <param name="absoluteUri">absolutna URI</param>
		/// <param name="role">nepouzivane v tejto verzii .NET Framework - urcene do buducnosti</param>
		/// <param name="typeOfObjectToReturn">Typ objektu, ktory treba vratit</param>
		/// <returns>A <see cref="System.IO.Stream"/> objekt alebo <c>null</c> ak je specifikovany iny typ ak stream</returns>
		public override object GetEntity(Uri absoluteUri, string role, Type typeOfObjectToReturn)
		{
#if DEBUG
			System.Diagnostics.Debug.WriteLine("FileXMLResolver.GetEntity() => absoluteUri = '" + ((absoluteUri != null) ? absoluteUri.ToString() : "null") + "'");
#endif	
			if (typeOfObjectToReturn == null || typeOfObjectToReturn == typeof(Stream))
			{
				return this.stream;
			}
			throw new XmlException("Xml_UnsupportedClass", null);
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// 'Rozlusti' absolutnu URI zo zakladu a relativnej URI.
		/// </summary>
		/// <param name="baseUri">Zakladna URI, z ktorej sa zistuje absolutna URI</param>
		/// <param name="relativeUri">Relativna URI, ktoru 'lustime'</param>
		/// <returns>Absolutna URI alebo <c>null</c> ak sa relativna URI neda 'rozlustit'</returns>
		public override System.Uri ResolveUri(System.Uri baseUri,	string relativeUri)
		{
			if (relativeUri == null) 
			{
				relativeUri = String.Empty;
			}
#if DEBUG
			System.Diagnostics.Debug.WriteLine("FileXMLResolver.ResolveUri() => baseUri = '" + ((baseUri != null) ? baseUri.ToString() : "null") + "' ; raletiveUri = '" + relativeUri + "'");
#endif	
			return new Uri("file://d//svg10.dtd");
		}
			
	
	} // public class FileXMLResolver : ...
} // namespace XML_editor.Common

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -