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
- ZipFileInfo.cs
- HttpModuleActionCollection.cs
- WebServiceClientProxyGenerator.cs
- WindowsClaimSet.cs
- JobPageOrder.cs
- AsyncResult.cs
- Mapping.cs
- CodeRemoveEventStatement.cs
- SqlRowUpdatedEvent.cs
- DetailsViewCommandEventArgs.cs
- UIAgentCrashedException.cs
- XmlReflectionImporter.cs
- TrackingProfileDeserializationException.cs
- updatecommandorderer.cs
- FixedBufferAttribute.cs
- TimeIntervalCollection.cs
- ObjectStateManager.cs
- DesignerDataSchemaClass.cs
- BoundsDrawingContextWalker.cs
- RuleDefinitions.cs
- ASCIIEncoding.cs
- ProxyWebPartManager.cs
- DataGridViewLinkCell.cs
- SoapClientProtocol.cs
- BufferAllocator.cs
- TextTreeObjectNode.cs
- WebServiceMethodData.cs
- DocumentApplicationJournalEntry.cs
- ProcessHostFactoryHelper.cs
- SqlInfoMessageEvent.cs
- ConfigurationPropertyAttribute.cs
- UnauthorizedAccessException.cs
- RuleSettings.cs
- HTMLTagNameToTypeMapper.cs
- SmtpException.cs
- SqlTopReducer.cs
- AlphabeticalEnumConverter.cs
- FacetDescription.cs
- EventLogger.cs
- BinaryCommonClasses.cs
- AutoSizeComboBox.cs
- AssemblyAttributesGoHere.cs
- BaseValidator.cs
- ZoneLinkButton.cs
- CursorInteropHelper.cs
- ExternalFile.cs
- PassportIdentity.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- PromptEventArgs.cs
- MdImport.cs
- SchemaExporter.cs
- Boolean.cs
- HeaderedItemsControl.cs
- HttpModuleAction.cs
- DeferredElementTreeState.cs
- Overlapped.cs
- ChtmlMobileTextWriter.cs
- DataTableReaderListener.cs
- ProtectedProviderSettings.cs
- WmfPlaceableFileHeader.cs
- EmptyEnumerator.cs
- SessionStateUtil.cs
- AttributeEmitter.cs
- TreeViewHitTestInfo.cs
- InternalTypeHelper.cs
- ReadOnlyTernaryTree.cs
- SiteMapNodeCollection.cs
- Stopwatch.cs
- RequestCachePolicy.cs
- StrokeNodeOperations.cs
- StreamGeometry.cs
- SignedPkcs7.cs
- XmlNavigatorFilter.cs
- SchemaElementLookUpTableEnumerator.cs
- TraceHandler.cs
- FixedPageStructure.cs
- TraceXPathNavigator.cs
- AssemblyName.cs
- TrackBarRenderer.cs
- CfgArc.cs
- entitydatasourceentitysetnameconverter.cs
- BooleanFunctions.cs
- AppDomainFactory.cs
- SecureEnvironment.cs
- ISFClipboardData.cs
- CrossSiteScriptingValidation.cs
- StrokeNodeOperations2.cs
- ComPlusContractBehavior.cs
- MachineKeySection.cs
- ToolStripDropDownClosedEventArgs.cs
- PointLight.cs
- ByteStreamMessageUtility.cs
- Schema.cs
- EntityTypeEmitter.cs
- TableLayoutColumnStyleCollection.cs
- ScalarConstant.cs
- EdmProperty.cs
- ContextMarshalException.cs
- MonthChangedEventArgs.cs
- XPathExpr.cs