📄 filexmlresolver.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 + -