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
- MappedMetaModel.cs
- IssuedSecurityTokenProvider.cs
- ProgressBar.cs
- ButtonRenderer.cs
- PersonalizationProviderHelper.cs
- TransformProviderWrapper.cs
- GridViewSelectEventArgs.cs
- DataSourceXmlElementAttribute.cs
- Rotation3DAnimationUsingKeyFrames.cs
- FileDialog_Vista_Interop.cs
- ResourceSetExpression.cs
- WebSysDescriptionAttribute.cs
- XmlSchemaComplexContentExtension.cs
- QueryCursorEventArgs.cs
- SQLBinaryStorage.cs
- SingleTagSectionHandler.cs
- HttpProfileBase.cs
- Registry.cs
- ObjectDataSourceDisposingEventArgs.cs
- XPathChildIterator.cs
- XmlUtil.cs
- HttpProfileBase.cs
- ApplicationSecurityManager.cs
- MenuItem.cs
- FilteredReadOnlyMetadataCollection.cs
- SecureEnvironment.cs
- ColorInterpolationModeValidation.cs
- XsltArgumentList.cs
- ProviderSettingsCollection.cs
- RadioButton.cs
- SelfIssuedAuthAsymmetricKey.cs
- SqlRecordBuffer.cs
- ItemChangedEventArgs.cs
- ScrollBar.cs
- EntitySqlQueryCacheEntry.cs
- SimpleType.cs
- ToolTipAutomationPeer.cs
- FullTrustAssembliesSection.cs
- BoundColumn.cs
- PeerServiceMessageContracts.cs
- Stacktrace.cs
- TransformerTypeCollection.cs
- XmlSerializerAssemblyAttribute.cs
- HttpHandler.cs
- ProxyWebPartManager.cs
- FixedPageStructure.cs
- KeyTime.cs
- DocumentPaginator.cs
- NewArray.cs
- Int32Rect.cs
- Error.cs
- NavigatingCancelEventArgs.cs
- EditorZoneBase.cs
- UriExt.cs
- Encoding.cs
- FunctionImportElement.cs
- SqlDataSourceEnumerator.cs
- AssemblyCollection.cs
- UrlMapping.cs
- ByteFacetDescriptionElement.cs
- ConfigXmlSignificantWhitespace.cs
- XmlChildEnumerator.cs
- ClientRuntimeConfig.cs
- SynchronizingStream.cs
- DiscoveryClientProtocol.cs
- ViewValidator.cs
- ModelFactory.cs
- ScriptResourceAttribute.cs
- wgx_exports.cs
- DataGridViewButtonColumn.cs
- TrackBarDesigner.cs
- Logging.cs
- KeyEventArgs.cs
- ValidatorCompatibilityHelper.cs
- RepeaterItem.cs
- LoginView.cs
- PropertyEmitter.cs
- MailWriter.cs
- SiteMapNode.cs
- ClonableStack.cs
- DeviceSpecificChoiceCollection.cs
- RangeBaseAutomationPeer.cs
- CodeDefaultValueExpression.cs
- FileBasedResourceGroveler.cs
- WebPartDisplayModeCollection.cs
- LoginName.cs
- SqlProfileProvider.cs
- ImmComposition.cs
- ModelFunction.cs
- HtmlHead.cs
- ReachSerializationCacheItems.cs
- ResourceAssociationTypeEnd.cs
- WindowsFont.cs
- WindowHideOrCloseTracker.cs
- Parser.cs
- ExtentKey.cs
- DbParameterCollectionHelper.cs
- DropShadowBitmapEffect.cs
- Polygon.cs
- NodeFunctions.cs