Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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
- StringArrayEditor.cs
- DataServiceQueryException.cs
- WebPartDisplayModeCollection.cs
- GetKeyedHashRequest.cs
- Double.cs
- HttpRuntimeSection.cs
- GiveFeedbackEventArgs.cs
- HelpKeywordAttribute.cs
- WebControl.cs
- ListItemViewAttribute.cs
- MdiWindowListStrip.cs
- SubclassTypeValidator.cs
- DPCustomTypeDescriptor.cs
- RootBrowserWindow.cs
- XmlUtil.cs
- InstanceLockLostException.cs
- UrlPropertyAttribute.cs
- WizardStepBase.cs
- MessageQueuePermissionEntry.cs
- ReadOnlyDataSource.cs
- ModifierKeysValueSerializer.cs
- DefaultBinder.cs
- SecureUICommand.cs
- Win32MouseDevice.cs
- SymLanguageVendor.cs
- BitmapCodecInfoInternal.cs
- ViewManagerAttribute.cs
- ParallelRangeManager.cs
- Rijndael.cs
- ModifiableIteratorCollection.cs
- ExpressionNormalizer.cs
- GPPOINTF.cs
- ExpressionLexer.cs
- BinarySerializer.cs
- FolderBrowserDialog.cs
- ModulesEntry.cs
- CodeRemoveEventStatement.cs
- GregorianCalendar.cs
- BrowserCapabilitiesFactoryBase.cs
- EventLogReader.cs
- ToolStripItemGlyph.cs
- XamlFigureLengthSerializer.cs
- ScriptControl.cs
- ConfigurationFileMap.cs
- UserPersonalizationStateInfo.cs
- MsmqProcessProtocolHandler.cs
- ListContractAdapter.cs
- _CookieModule.cs
- TextTreeInsertElementUndoUnit.cs
- JumpList.cs
- FixedStringLookup.cs
- IsolatedStorage.cs
- elementinformation.cs
- ComAdminWrapper.cs
- XsdDuration.cs
- Vector3DCollectionConverter.cs
- IResourceProvider.cs
- TypeConverterValueSerializer.cs
- XPathConvert.cs
- RowTypePropertyElement.cs
- DataGridViewRowPrePaintEventArgs.cs
- PackageRelationshipCollection.cs
- EntityDesignerDataSourceView.cs
- CodeDirectionExpression.cs
- TextEditorCopyPaste.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- HttpVersion.cs
- GridViewPageEventArgs.cs
- NativeMethods.cs
- MatrixConverter.cs
- ContentWrapperAttribute.cs
- CacheEntry.cs
- InstanceDataCollection.cs
- ToolboxCategory.cs
- ChtmlTextWriter.cs
- QueryParameter.cs
- LinkLabelLinkClickedEvent.cs
- ClientCultureInfo.cs
- DataSetUtil.cs
- WindowsGrip.cs
- NativeMethods.cs
- CodeMemberEvent.cs
- ProcessRequestArgs.cs
- DockPattern.cs
- TrackBar.cs
- JsonGlobals.cs
- PersistChildrenAttribute.cs
- MissingFieldException.cs
- CalendarAutoFormat.cs
- XPathEmptyIterator.cs
- MessageBox.cs
- Array.cs
- RolePrincipal.cs
- OracleConnectionStringBuilder.cs
- TextParagraphView.cs
- CheckPair.cs
- ClientBuildManager.cs
- GridLength.cs
- StylusDownEventArgs.cs
- DelayedRegex.cs