Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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
- AbsoluteQuery.cs
- WebZone.cs
- SafeProcessHandle.cs
- IisTraceListener.cs
- XPathSelfQuery.cs
- SiteMapPath.cs
- IntellisenseTextBox.cs
- TerminateDesigner.cs
- TransformerInfo.cs
- ValueTypeFieldReference.cs
- MultipleViewProviderWrapper.cs
- ObjectAnimationUsingKeyFrames.cs
- DefaultPrintController.cs
- ObjectItemAttributeAssemblyLoader.cs
- LicFileLicenseProvider.cs
- SqlDependencyListener.cs
- FlowNode.cs
- CompareValidator.cs
- BooleanFunctions.cs
- IpcPort.cs
- Timeline.cs
- SByte.cs
- Duration.cs
- SubMenuStyle.cs
- PictureBox.cs
- InkCanvasFeedbackAdorner.cs
- Image.cs
- Win32.cs
- WebPartZoneAutoFormat.cs
- EventProviderWriter.cs
- EventRoute.cs
- HttpPostedFile.cs
- XmlDataSource.cs
- WsdlInspector.cs
- UpdateException.cs
- StringConverter.cs
- ParameterCollection.cs
- assertwrapper.cs
- Brushes.cs
- EntityRecordInfo.cs
- KeyTimeConverter.cs
- CfgSemanticTag.cs
- ServiceHandle.cs
- CollectionChangeEventArgs.cs
- ManagedWndProcTracker.cs
- TextEditorSelection.cs
- Policy.cs
- ServicesUtilities.cs
- Item.cs
- PlatformNotSupportedException.cs
- SafeCryptHandles.cs
- SqlGatherConsumedAliases.cs
- SQLBinary.cs
- GenericAuthenticationEventArgs.cs
- XamlWriterExtensions.cs
- LabelLiteral.cs
- ProgressBarBrushConverter.cs
- ElementUtil.cs
- BlurBitmapEffect.cs
- CommandDevice.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- CapacityStreamGeometryContext.cs
- ObjectStorage.cs
- Boolean.cs
- HealthMonitoringSectionHelper.cs
- MatrixTransform.cs
- ActiveXContainer.cs
- BufferedStream.cs
- BackStopAuthenticationModule.cs
- Permission.cs
- PersonalizationEntry.cs
- ImageIndexConverter.cs
- ZipIOExtraFieldZip64Element.cs
- StylusSystemGestureEventArgs.cs
- TrackingStringDictionary.cs
- DesignerVerbToolStripMenuItem.cs
- PathGeometry.cs
- SmtpMail.cs
- xml.cs
- RequestCachePolicy.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- SpotLight.cs
- WrappedReader.cs
- InfoCardTraceRecord.cs
- Viewport3DVisual.cs
- TemplatedAdorner.cs
- MatrixAnimationUsingKeyFrames.cs
- ObjectParameter.cs
- BeginStoryboard.cs
- TdsRecordBufferSetter.cs
- Collection.cs
- HtmlEmptyTagControlBuilder.cs
- LineSegment.cs
- ProxyElement.cs
- PagesSection.cs
- UnknownBitmapEncoder.cs
- MediaElement.cs
- DependencyObjectProvider.cs
- SmtpReplyReaderFactory.cs
- ServicePointManager.cs