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
- HtmlTable.cs
- PasswordRecovery.cs
- BinaryMethodMessage.cs
- MasterPageCodeDomTreeGenerator.cs
- DispatcherFrame.cs
- ClientFormsAuthenticationCredentials.cs
- FontSizeConverter.cs
- RequiredFieldValidator.cs
- HostingEnvironmentException.cs
- DataGridTextColumn.cs
- StylusPointPropertyUnit.cs
- HttpAsyncResult.cs
- URIFormatException.cs
- UIPropertyMetadata.cs
- DataGridViewCellConverter.cs
- PageAdapter.cs
- Oid.cs
- ContentWrapperAttribute.cs
- DataGridRow.cs
- ListViewTableCell.cs
- DeviceOverridableAttribute.cs
- ReadOnlyHierarchicalDataSourceView.cs
- GridViewCancelEditEventArgs.cs
- XmlDataSource.cs
- LowerCaseStringConverter.cs
- CounterSampleCalculator.cs
- EntityContainerEmitter.cs
- InvalidStoreProtectionKeyException.cs
- GridViewCancelEditEventArgs.cs
- SplashScreenNativeMethods.cs
- ValidateNames.cs
- ControlCommandSet.cs
- TagPrefixAttribute.cs
- DocumentNUp.cs
- StrokeCollection.cs
- recordstatescratchpad.cs
- ListSortDescription.cs
- ContractAdapter.cs
- Span.cs
- ObjectSelectorEditor.cs
- PolyLineSegmentFigureLogic.cs
- FormViewUpdateEventArgs.cs
- BitmapImage.cs
- DataGridViewColumnCollection.cs
- HttpContext.cs
- FormatConvertedBitmap.cs
- LineSegment.cs
- TypeConstant.cs
- TemplateBindingExtensionConverter.cs
- DetailsViewUpdatedEventArgs.cs
- HtmlDocument.cs
- ExeConfigurationFileMap.cs
- RightsManagementEncryptedStream.cs
- TargetParameterCountException.cs
- TreeNode.cs
- ParserHooks.cs
- FileDataSourceCache.cs
- MsmqIntegrationInputMessage.cs
- BaseServiceProvider.cs
- StateValidator.cs
- AudioFormatConverter.cs
- DataGridRow.cs
- ActivityBindForm.Designer.cs
- ToolbarAUtomationPeer.cs
- VisualStateGroup.cs
- UndoManager.cs
- SHA512Managed.cs
- unsafenativemethodstextservices.cs
- Duration.cs
- TemplateApplicationHelper.cs
- NativeWindow.cs
- GuidTagList.cs
- InkCanvasInnerCanvas.cs
- DbConnectionPoolOptions.cs
- FlowDocumentView.cs
- _RegBlobWebProxyDataBuilder.cs
- TagMapCollection.cs
- ProgressBar.cs
- TraceContextRecord.cs
- ExpressionPrinter.cs
- Message.cs
- FileNameEditor.cs
- XmlAnyElementAttribute.cs
- SettingsBindableAttribute.cs
- KnownBoxes.cs
- Activity.cs
- TraceUtils.cs
- SizeIndependentAnimationStorage.cs
- CodeNamespaceImportCollection.cs
- CmsInterop.cs
- Deflater.cs
- DetailsViewInsertedEventArgs.cs
- BaseDataListPage.cs
- SoapHeader.cs
- PersistChildrenAttribute.cs
- DeviceFilterDictionary.cs
- PointF.cs
- Module.cs
- StringCollectionMarkupSerializer.cs
- EntitySetRetriever.cs