Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / XmlAttributeHolder.cs / 1 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RepeatEnumerable.cs
- CommonGetThemePartSize.cs
- BitSet.cs
- SafeMILHandleMemoryPressure.cs
- EmptyEnumerable.cs
- EventLogInternal.cs
- MemberAccessException.cs
- AddInControllerImpl.cs
- InsufficientMemoryException.cs
- storepermissionattribute.cs
- WebPartVerbCollection.cs
- SequenceDesignerAccessibleObject.cs
- SelectionEditingBehavior.cs
- WebControlAdapter.cs
- FilteredDataSetHelper.cs
- XmlSchemaAnnotation.cs
- ResXResourceSet.cs
- PropertyItem.cs
- XmlSchemaSimpleContentRestriction.cs
- SQLUtility.cs
- ClientSettings.cs
- MobileRedirect.cs
- NameValuePair.cs
- LinearQuaternionKeyFrame.cs
- XmlSchemaSet.cs
- IdentifierCollection.cs
- ContainerParagraph.cs
- MemoryMappedViewAccessor.cs
- ReferenceService.cs
- FieldNameLookup.cs
- TriggerActionCollection.cs
- OleDbTransaction.cs
- SplineKeyFrames.cs
- WindowsTreeView.cs
- TcpWorkerProcess.cs
- WindowsRichEdit.cs
- PropertyMapper.cs
- InvokeMethod.cs
- TableCellCollection.cs
- ArraySegment.cs
- _UriSyntax.cs
- TaskFormBase.cs
- ResXFileRef.cs
- ToolStripPanelRenderEventArgs.cs
- WizardPanel.cs
- MouseGestureValueSerializer.cs
- RectAnimationClockResource.cs
- BindingSource.cs
- GridViewColumnHeaderAutomationPeer.cs
- Double.cs
- ZoneIdentityPermission.cs
- RouteValueExpressionBuilder.cs
- TypeSystem.cs
- SqlClientWrapperSmiStream.cs
- PropertyIdentifier.cs
- ToolStripComboBox.cs
- HtmlElementEventArgs.cs
- BrowsableAttribute.cs
- ListBoxItem.cs
- ContextMenu.cs
- ClickablePoint.cs
- PerformanceCounterPermissionEntryCollection.cs
- StylusEventArgs.cs
- CursorInteropHelper.cs
- SmtpNetworkElement.cs
- PhonemeEventArgs.cs
- EditingMode.cs
- CompiledAction.cs
- AuthenticationModuleElement.cs
- MemberAccessException.cs
- RightsManagementEncryptionTransform.cs
- EventToken.cs
- TypeUnloadedException.cs
- SrgsItemList.cs
- ItemChangedEventArgs.cs
- NameValueSectionHandler.cs
- ScriptReferenceEventArgs.cs
- SqlConnectionString.cs
- DefaultBindingPropertyAttribute.cs
- NominalTypeEliminator.cs
- ObjectHelper.cs
- XmlReturnWriter.cs
- NetworkStream.cs
- TextCollapsingProperties.cs
- MsmqChannelFactory.cs
- TemplateEditingVerb.cs
- HostingEnvironmentSection.cs
- CLSCompliantAttribute.cs
- DrawingAttributes.cs
- MissingMethodException.cs
- diagnosticsswitches.cs
- OrderedHashRepartitionStream.cs
- SqlDataSourceStatusEventArgs.cs
- ImageFormat.cs
- Bits.cs
- OutputScopeManager.cs
- CompensationHandlingFilter.cs
- CDSsyncETWBCLProvider.cs
- MessageProperties.cs
- XmlSchemaAttributeGroup.cs