Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Dom / XmlDeclaration.cs / 1305376 / XmlDeclaration.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml {
using System.Text;
using System.Diagnostics;
// Represents the xml declaration nodes:
public class XmlDeclaration : XmlLinkedNode {
const string YES = "yes";
const string NO = "no";
private string version;
private string encoding;
private string standalone;
protected internal XmlDeclaration( string version, string encoding, string standalone, XmlDocument doc ) : base( doc ) {
if ( !IsValidXmlVersion( version ) )
throw new ArgumentException( Res.GetString( Res.Xdom_Version ) );
if( ( standalone != null ) && ( standalone.Length > 0 ) )
if ( ( standalone != YES ) && ( standalone != NO ) )
throw new ArgumentException( Res.GetString(Res.Xdom_standalone, standalone) );
this.Encoding = encoding;
this.Standalone = standalone;
this.Version = version;
}
// The version attribute for
public string Version {
get { return this.version; }
internal set { this.version = value; }
}
// Specifies the value of the encoding attribute, as for
//
public string Encoding {
get { return this.encoding; }
set { this.encoding = ( (value == null) ? String.Empty : value ); }
}
// Specifies the value of the standalone attribute.
public string Standalone {
get { return this.standalone; }
set {
if ( value == null )
this.standalone = String.Empty;
else if ( value.Length == 0 || value == YES || value == NO )
this.standalone = value;
else
throw new ArgumentException( Res.GetString(Res.Xdom_standalone, value) );
}
}
public override String Value {
get { return InnerText; }
set { InnerText = value; }
}
// Gets or sets the concatenated values of the node and
// all its children.
public override string InnerText {
get {
StringBuilder strb = new StringBuilder("version=\"" + Version + "\"");
if ( Encoding.Length > 0 ) {
strb.Append(" encoding=\"");
strb.Append(Encoding);
strb.Append("\"");
}
if ( Standalone.Length > 0 ) {
strb.Append(" standalone=\"");
strb.Append(Standalone);
strb.Append("\"");
}
return strb.ToString();
}
set {
string tempVersion = null;
string tempEncoding = null;
string tempStandalone = null;
string orgEncoding = this.Encoding;
string orgStandalone = this.Standalone;
string orgVersion = this.Version;
XmlLoader.ParseXmlDeclarationValue( value, out tempVersion, out tempEncoding, out tempStandalone );
try {
if ( tempVersion != null && !IsValidXmlVersion(tempVersion) )
throw new ArgumentException(Res.GetString(Res.Xdom_Version));
Version = tempVersion;
if ( tempEncoding != null )
Encoding = tempEncoding;
if ( tempStandalone != null )
Standalone = tempStandalone;
}
catch {
Encoding = orgEncoding;
Standalone = orgStandalone;
Version = orgVersion;
throw;
}
}
}
//override methods and properties from XmlNode
// Gets the name of the node.
public override String Name {
get {
return "xml";
}
}
// Gets the name of the current node without the namespace prefix.
public override string LocalName {
get { return Name;}
}
// Gets the type of the current node.
public override XmlNodeType NodeType {
get { return XmlNodeType.XmlDeclaration;}
}
// Creates a duplicate of this node.
public override XmlNode CloneNode(bool deep) {
Debug.Assert( OwnerDocument != null );
return OwnerDocument.CreateXmlDeclaration( Version, Encoding, Standalone );
}
// Saves the node to the specified XmlWriter.
public override void WriteTo(XmlWriter w) {
w.WriteProcessingInstruction(Name, InnerText);
}
// Saves all the children of the node to the specified XmlWriter.
public override void WriteContentTo(XmlWriter w) {
// Intentionally do nothing since the node doesn't have children.
}
private bool IsValidXmlVersion(string ver) {
return ver.Length >= 3 && ver[0] == '1' && ver[1] == '.' && XmlCharType.IsOnlyDigits(ver, 2, ver.Length - 2);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextPatternIdentifiers.cs
- CodeAssignStatement.cs
- Timeline.cs
- Registry.cs
- NodeFunctions.cs
- TypeInfo.cs
- Column.cs
- CodeDirectoryCompiler.cs
- METAHEADER.cs
- NavigationWindow.cs
- WorkflowInstance.cs
- XmlSiteMapProvider.cs
- Misc.cs
- TreeNode.cs
- ControlPaint.cs
- Listen.cs
- TableLayout.cs
- SafeProcessHandle.cs
- MaterializeFromAtom.cs
- InputGestureCollection.cs
- StylusPointPropertyUnit.cs
- SiteOfOriginPart.cs
- Stackframe.cs
- XmlAttributes.cs
- CancellationTokenSource.cs
- XmlSerializerVersionAttribute.cs
- SourceElementsCollection.cs
- MultiSelectRootGridEntry.cs
- RtfControls.cs
- SecurityResources.cs
- QueryConverter.cs
- SectionUpdates.cs
- StrokeIntersection.cs
- ManifestSignedXml.cs
- ToolStripKeyboardHandlingService.cs
- FileChangesMonitor.cs
- SvcMapFileLoader.cs
- UnsafeNativeMethods.cs
- CompositionAdorner.cs
- AccessDataSourceView.cs
- MappingSource.cs
- TimerElapsedEvenArgs.cs
- Graphics.cs
- WebFormsRootDesigner.cs
- TabOrder.cs
- HttpModuleCollection.cs
- WebEventCodes.cs
- PersonalizableAttribute.cs
- MULTI_QI.cs
- CodeSubDirectory.cs
- XmlTextReader.cs
- DeviceOverridableAttribute.cs
- DatatypeImplementation.cs
- StrongNamePublicKeyBlob.cs
- SystemIcmpV4Statistics.cs
- Completion.cs
- ThreadStaticAttribute.cs
- WasHttpHandlersInstallComponent.cs
- SchemaAttDef.cs
- FixedSOMLineRanges.cs
- ActivityCodeDomReferenceService.cs
- CssClassPropertyAttribute.cs
- CancellationToken.cs
- DataGridViewSortCompareEventArgs.cs
- MarkupCompilePass2.cs
- DataObjectFieldAttribute.cs
- DataServiceQuery.cs
- StringValidatorAttribute.cs
- AmbientValueAttribute.cs
- HttpProfileBase.cs
- IndexedGlyphRun.cs
- BaseWebProxyFinder.cs
- HostProtectionPermission.cs
- Int32CAMarshaler.cs
- CompilerScope.Storage.cs
- WrappingXamlSchemaContext.cs
- ProviderCommandInfoUtils.cs
- DataGridViewTopRowAccessibleObject.cs
- ServiceEndpointElement.cs
- EntityException.cs
- ObjRef.cs
- CultureInfoConverter.cs
- ArcSegment.cs
- SapiInterop.cs
- ProvidersHelper.cs
- DataRelation.cs
- QueryCursorEventArgs.cs
- HttpProfileBase.cs
- FrameworkPropertyMetadata.cs
- BitArray.cs
- DocumentViewerBaseAutomationPeer.cs
- TouchesCapturedWithinProperty.cs
- DisplayNameAttribute.cs
- FontCollection.cs
- QueryInterceptorAttribute.cs
- GenericWebPart.cs
- GetBrowserTokenRequest.cs
- ZipIOCentralDirectoryBlock.cs
- login.cs
- ObjectAnimationUsingKeyFrames.cs