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
- AnnotationAdorner.cs
- WsdlImporter.cs
- ExpressionNormalizer.cs
- RightsController.cs
- AffineTransform3D.cs
- TextDecorations.cs
- GCHandleCookieTable.cs
- HostingEnvironmentSection.cs
- ToolStripContextMenu.cs
- ImageField.cs
- TextDataBindingHandler.cs
- TraceLog.cs
- SerializationObjectManager.cs
- AssemblyAssociatedContentFileAttribute.cs
- DependencyPropertyDescriptor.cs
- ConnectorSelectionGlyph.cs
- ConnectionsZoneAutoFormat.cs
- SecurityHelper.cs
- ListBox.cs
- Currency.cs
- MetafileHeaderEmf.cs
- TypeUtil.cs
- SendSecurityHeaderElement.cs
- XmlSignificantWhitespace.cs
- DesignSurfaceServiceContainer.cs
- PersonalizablePropertyEntry.cs
- RequestCacheManager.cs
- DataGridViewTextBoxColumn.cs
- DrawingAttributeSerializer.cs
- SizeF.cs
- webclient.cs
- TypeUtil.cs
- TextServicesLoader.cs
- AssemblyHash.cs
- TypefaceMetricsCache.cs
- SafeNativeMethods.cs
- TransactionFlowProperty.cs
- NativeMethods.cs
- DataServiceHost.cs
- DataGridViewDataConnection.cs
- ExpandSegment.cs
- ConfigurationPermission.cs
- XmlSchemaSimpleContentExtension.cs
- FormattedTextSymbols.cs
- ParseElementCollection.cs
- DetailsViewPageEventArgs.cs
- MenuItem.cs
- Formatter.cs
- EventNotify.cs
- FixedSOMTableRow.cs
- QualifiedId.cs
- TransformedBitmap.cs
- SupportsEventValidationAttribute.cs
- CalloutQueueItem.cs
- ExtractedStateEntry.cs
- NamespaceMapping.cs
- DataGridPagerStyle.cs
- DataListItemEventArgs.cs
- coordinator.cs
- DPCustomTypeDescriptor.cs
- ScrollBarRenderer.cs
- JavaScriptObjectDeserializer.cs
- DataKey.cs
- InputDevice.cs
- future.cs
- MultipleCopiesCollection.cs
- ToolBar.cs
- Thumb.cs
- UserPreferenceChangingEventArgs.cs
- SingleAnimationBase.cs
- LogEntryHeaderSerializer.cs
- XmlNullResolver.cs
- ContextMenuAutomationPeer.cs
- ThreadPool.cs
- MutexSecurity.cs
- MenuAdapter.cs
- DbConnectionStringCommon.cs
- ToolStripSplitButton.cs
- Serializer.cs
- QuotedPrintableStream.cs
- AspNetCacheProfileAttribute.cs
- HwndTarget.cs
- FileLogRecordStream.cs
- RC2.cs
- WinFormsSpinner.cs
- HwndSubclass.cs
- QueryCreatedEventArgs.cs
- ParameterElement.cs
- _Win32.cs
- RefreshPropertiesAttribute.cs
- ConfigXmlComment.cs
- ProcessModelSection.cs
- ComponentManagerBroker.cs
- ListView.cs
- AttributeExtensions.cs
- PagedDataSource.cs
- SystemWebSectionGroup.cs
- LineSegment.cs
- ThousandthOfEmRealPoints.cs
- XsdCachingReader.cs