Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / XmlAttributeHolder.cs / 1305376 / XmlAttributeHolder.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.Xml; struct XmlAttributeHolder { string prefix; string ns; string localName; string value; public static XmlAttributeHolder[] emptyArray = new XmlAttributeHolder[0]; public XmlAttributeHolder(string prefix, string localName, string ns, string value) { this.prefix = prefix; this.localName = localName; this.ns = ns; this.value = value; } public string Prefix { get { return prefix; } } public string NamespaceUri { get { return ns; } } public string LocalName { get { return localName; } } public string Value { get { return value; } } public void WriteTo(XmlWriter writer) { writer.WriteStartAttribute(prefix, localName, ns); writer.WriteString(value); writer.WriteEndAttribute(); } public static void WriteAttributes(XmlAttributeHolder[] attributes, XmlWriter writer) { for (int i = 0; i < attributes.Length; i++) attributes[i].WriteTo(writer); } public static XmlAttributeHolder[] ReadAttributes(XmlDictionaryReader reader) { int maxSizeOfHeaders = int.MaxValue; return ReadAttributes(reader, ref maxSizeOfHeaders); } public static XmlAttributeHolder[] ReadAttributes(XmlDictionaryReader reader, ref int maxSizeOfHeaders) { if (reader.AttributeCount == 0) return emptyArray; XmlAttributeHolder[] attributes = new XmlAttributeHolder[reader.AttributeCount]; reader.MoveToFirstAttribute(); for (int i = 0; i < attributes.Length; i++) { string ns = reader.NamespaceURI; string localName = reader.LocalName; string prefix = reader.Prefix; string value = string.Empty; while (reader.ReadAttributeValue()) { if (value.Length == 0) value = reader.Value; else value += reader.Value; } Deduct(prefix, ref maxSizeOfHeaders); Deduct(localName, ref maxSizeOfHeaders); Deduct(ns, ref maxSizeOfHeaders); Deduct(value, ref maxSizeOfHeaders); attributes[i] = new XmlAttributeHolder(prefix, localName, ns, value); reader.MoveToNextAttribute(); } reader.MoveToElement(); return attributes; } static void Deduct(string s, ref int maxSizeOfHeaders) { int byteCount = s.Length * sizeof(char); if (byteCount > maxSizeOfHeaders) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.XmlBufferQuotaExceeded))); } maxSizeOfHeaders -= byteCount; } public static string GetAttribute(XmlAttributeHolder[] attributes, string localName, string ns) { for (int i = 0; i < attributes.Length; i++) if (attributes[i].LocalName == localName && attributes[i].NamespaceUri == ns) return attributes[i].Value; return null; } } } // 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
- SafeTokenHandle.cs
- CodeGroup.cs
- Attributes.cs
- NonSerializedAttribute.cs
- Logging.cs
- KeysConverter.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ControlBindingsCollection.cs
- ServiceDiscoveryElement.cs
- SqlCacheDependencySection.cs
- VisualProxy.cs
- CommentAction.cs
- MenuItemBindingCollection.cs
- EndpointAddress10.cs
- CngProperty.cs
- CallbackDebugElement.cs
- FrameworkElement.cs
- DataException.cs
- TraceProvider.cs
- DocumentPage.cs
- InputChannel.cs
- AttributeUsageAttribute.cs
- UniqueTransportManagerRegistration.cs
- TableSectionStyle.cs
- WSSecurityTokenSerializer.cs
- ZipIOExtraField.cs
- WindowsFormsHostPropertyMap.cs
- coordinatorscratchpad.cs
- ComponentChangedEvent.cs
- CompModHelpers.cs
- UserValidatedEventArgs.cs
- PtsHelper.cs
- BeginStoryboard.cs
- RtfToXamlReader.cs
- StreamWithDictionary.cs
- TextPointer.cs
- DataGridViewAutoSizeModeEventArgs.cs
- SqlUtils.cs
- DesignTimeTemplateParser.cs
- FrameworkElementAutomationPeer.cs
- SecureUICommand.cs
- MsmqNonTransactedPoisonHandler.cs
- FormsAuthenticationCredentials.cs
- RegexRunner.cs
- HttpCookieCollection.cs
- GraphicsContainer.cs
- ParameterCollection.cs
- RulePatternOps.cs
- RegexRunnerFactory.cs
- ObfuscateAssemblyAttribute.cs
- OrderedDictionary.cs
- RuleRef.cs
- UserControlCodeDomTreeGenerator.cs
- ExceptionAggregator.cs
- ControlType.cs
- DeploymentExceptionMapper.cs
- BamlRecords.cs
- TableRow.cs
- SecuritySessionSecurityTokenProvider.cs
- ProcessThread.cs
- DataListCommandEventArgs.cs
- RuntimeResourceSet.cs
- ConnectorSelectionGlyph.cs
- FormatSettings.cs
- AnonymousIdentificationSection.cs
- GeneralTransformGroup.cs
- ControlPaint.cs
- smtppermission.cs
- NativeMethodsCLR.cs
- MulticastOption.cs
- OracleFactory.cs
- CompilerParameters.cs
- AccessorTable.cs
- TemplateControlBuildProvider.cs
- CheckableControlBaseAdapter.cs
- ArglessEventHandlerProxy.cs
- DataSetViewSchema.cs
- Timer.cs
- DataContractAttribute.cs
- SqlXmlStorage.cs
- XamlTypeMapper.cs
- UIElement3D.cs
- SiteMapNodeItemEventArgs.cs
- MappingMetadataHelper.cs
- AnimationTimeline.cs
- MexServiceChannelBuilder.cs
- unsafenativemethodsother.cs
- ChannelBinding.cs
- QilDataSource.cs
- HttpCapabilitiesEvaluator.cs
- ResourceAttributes.cs
- RecognizedPhrase.cs
- HashCodeCombiner.cs
- LineInfo.cs
- HtmlHead.cs
- GeometryGroup.cs
- DesignTimeData.cs
- SoapAttributeOverrides.cs
- GeneralTransformCollection.cs
- XsdDateTime.cs