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
- SecurityContextSecurityTokenResolver.cs
- DataChangedEventManager.cs
- LazyTextWriterCreator.cs
- ComEventsInfo.cs
- ToolStripItemTextRenderEventArgs.cs
- PrintDialog.cs
- FontStretches.cs
- CallbackDebugBehavior.cs
- XmlSerializationReader.cs
- ProviderConnectionPointCollection.cs
- TextEditorCopyPaste.cs
- NameTable.cs
- BulletedListEventArgs.cs
- VariableAction.cs
- DiscoveryUtility.cs
- ExtensionFile.cs
- SafeCoTaskMem.cs
- SharedConnectionListener.cs
- TextReader.cs
- DocumentSequence.cs
- ParserHooks.cs
- ClientApiGenerator.cs
- LabelEditEvent.cs
- TextTreeUndoUnit.cs
- ItemsPresenter.cs
- SiteOfOriginPart.cs
- ListCollectionView.cs
- LockedActivityGlyph.cs
- SingleAnimation.cs
- RequiredFieldValidator.cs
- XmlDigitalSignatureProcessor.cs
- PermissionRequestEvidence.cs
- SoapFormatter.cs
- MarkerProperties.cs
- DataGridViewTopLeftHeaderCell.cs
- CustomCredentialPolicy.cs
- ToolStripPanelRow.cs
- ReaderContextStackData.cs
- URLIdentityPermission.cs
- HttpRawResponse.cs
- ProgressChangedEventArgs.cs
- FixedSOMTableRow.cs
- SqlInfoMessageEvent.cs
- ThicknessKeyFrameCollection.cs
- StringFreezingAttribute.cs
- GridViewItemAutomationPeer.cs
- Random.cs
- CodeIterationStatement.cs
- TranslateTransform3D.cs
- HttpCachePolicy.cs
- ClientUtils.cs
- UserControlCodeDomTreeGenerator.cs
- TextEndOfSegment.cs
- dataprotectionpermission.cs
- AmbientLight.cs
- OleAutBinder.cs
- SinglePageViewer.cs
- BookmarkCallbackWrapper.cs
- MultiView.cs
- UnmanagedMemoryStreamWrapper.cs
- FacetDescription.cs
- RenamedEventArgs.cs
- ValidationErrorCollection.cs
- PartialCachingAttribute.cs
- SqlProcedureAttribute.cs
- Polygon.cs
- CultureInfo.cs
- WindowsButton.cs
- DataGridViewCellConverter.cs
- AssemblyAttributes.cs
- LogAppendAsyncResult.cs
- documentation.cs
- DataGridItem.cs
- AddInPipelineAttributes.cs
- MenuItem.cs
- MenuAutomationPeer.cs
- DataGridLength.cs
- isolationinterop.cs
- UIElement.cs
- SelectionEditingBehavior.cs
- SourceFilter.cs
- SchemaAttDef.cs
- ProxyAttribute.cs
- ByteStream.cs
- PropertyIdentifier.cs
- MouseActionValueSerializer.cs
- MenuBindingsEditor.cs
- ByteArrayHelperWithString.cs
- EraserBehavior.cs
- unsafeIndexingFilterStream.cs
- DictionaryChange.cs
- BinaryObjectReader.cs
- GlobalizationAssembly.cs
- RtfControlWordInfo.cs
- Drawing.cs
- MouseActionValueSerializer.cs
- OutputCacheSettingsSection.cs
- TemplateControlParser.cs
- BindingWorker.cs
- UInt16Storage.cs