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
- CodeObject.cs
- BamlLocalizableResourceKey.cs
- DirtyTextRange.cs
- TargetPerspective.cs
- PageThemeBuildProvider.cs
- InstancePersistenceEvent.cs
- ModelTreeEnumerator.cs
- RectKeyFrameCollection.cs
- AdornedElementPlaceholder.cs
- FlowLayout.cs
- HttpConfigurationContext.cs
- ParameterSubsegment.cs
- ComponentEditorPage.cs
- SerializerDescriptor.cs
- ComUdtElement.cs
- SmiGettersStream.cs
- SecurityContext.cs
- SystemWebSectionGroup.cs
- MaskedTextBox.cs
- FloaterParaClient.cs
- ToolboxComponentsCreatedEventArgs.cs
- FtpWebResponse.cs
- FutureFactory.cs
- EntityViewGenerationConstants.cs
- BaseInfoTable.cs
- DataGridRow.cs
- Preprocessor.cs
- ActiveDocumentEvent.cs
- PopupRoot.cs
- XPathNode.cs
- CommonDialog.cs
- util.cs
- TreeViewAutomationPeer.cs
- EntityCommandExecutionException.cs
- XhtmlBasicPanelAdapter.cs
- GridViewRowCollection.cs
- Visitors.cs
- LayoutUtils.cs
- srgsitem.cs
- PropertiesTab.cs
- SoapAttributeAttribute.cs
- ProgressBarHighlightConverter.cs
- RequestCacheValidator.cs
- TextBoxBase.cs
- ButtonPopupAdapter.cs
- TypedMessageConverter.cs
- CompiledXpathExpr.cs
- PartialArray.cs
- MinMaxParagraphWidth.cs
- FixUpCollection.cs
- EventDescriptorCollection.cs
- EmptyWithCancelationCheckWorkItem.cs
- ImageFormat.cs
- Executor.cs
- WSDualHttpBindingCollectionElement.cs
- BuildProviderCollection.cs
- QueryOutputWriter.cs
- ImageDrawing.cs
- DesignerAttribute.cs
- BitmapEffectGroup.cs
- SqlDependencyUtils.cs
- Memoizer.cs
- DataGridViewImageColumn.cs
- AutoScrollExpandMessageFilter.cs
- PerfProviderCollection.cs
- CultureSpecificCharacterBufferRange.cs
- DataComponentMethodGenerator.cs
- LinkArea.cs
- OleDbReferenceCollection.cs
- StringBuilder.cs
- XslAst.cs
- RolePrincipal.cs
- ClientConfigurationSystem.cs
- WebResourceAttribute.cs
- FloaterParaClient.cs
- InsufficientMemoryException.cs
- PerformanceCounterPermissionAttribute.cs
- CommandHelper.cs
- CalendarDesigner.cs
- Vector3dCollection.cs
- AnnotationHighlightLayer.cs
- RoutedEvent.cs
- ColorMatrix.cs
- TrackingMemoryStreamFactory.cs
- PluggableProtocol.cs
- EntityClassGenerator.cs
- SettingsSection.cs
- ToolboxItemWrapper.cs
- ValueOfAction.cs
- TransactionOptions.cs
- SearchForVirtualItemEventArgs.cs
- XmlDocumentFragment.cs
- MinMaxParagraphWidth.cs
- TableDetailsRow.cs
- Pool.cs
- Attributes.cs
- Int64.cs
- ContextProperty.cs
- DrawingImage.cs
- ProtocolElementCollection.cs