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
- WinEventQueueItem.cs
- ValueConversionAttribute.cs
- AsyncContentLoadedEventArgs.cs
- ApplicationDirectory.cs
- Baml2006KeyRecord.cs
- DiscreteKeyFrames.cs
- HwndSource.cs
- GcHandle.cs
- PrintController.cs
- ResXFileRef.cs
- TreeBuilder.cs
- Attribute.cs
- CryptoProvider.cs
- HttpCachePolicyWrapper.cs
- ListViewDeleteEventArgs.cs
- DataGridState.cs
- SQLInt32.cs
- Button.cs
- SapiRecoInterop.cs
- PropertyMap.cs
- SendKeys.cs
- Highlights.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ContextQuery.cs
- DBPropSet.cs
- HostedElements.cs
- RecognizerInfo.cs
- DesignerAdapterUtil.cs
- TransformerInfoCollection.cs
- XmlIterators.cs
- DecimalConstantAttribute.cs
- LoginName.cs
- TextBoxBase.cs
- LineGeometry.cs
- ScrollViewer.cs
- WebPart.cs
- InputGestureCollection.cs
- WindowsSysHeader.cs
- ChildDocumentBlock.cs
- UTF32Encoding.cs
- ObjectListField.cs
- RequestCacheValidator.cs
- PassportAuthentication.cs
- EntityDataSourceChangedEventArgs.cs
- DictionarySectionHandler.cs
- DataObjectEventArgs.cs
- DataGridItem.cs
- CompoundFileStorageReference.cs
- Hashtable.cs
- ConnectionManagementSection.cs
- TemplateContentLoader.cs
- PatternMatcher.cs
- RepeatButtonAutomationPeer.cs
- SoapHeaders.cs
- SecurityManager.cs
- TimeSpanStorage.cs
- PtsHost.cs
- CompositeDuplexElement.cs
- XslTransform.cs
- StateItem.cs
- TagNameToTypeMapper.cs
- EntryWrittenEventArgs.cs
- ReturnValue.cs
- SocketInformation.cs
- WmlImageAdapter.cs
- SqlServer2KCompatibilityCheck.cs
- OpenTypeCommon.cs
- RecognizerStateChangedEventArgs.cs
- FileLogRecordStream.cs
- ToolStripLocationCancelEventArgs.cs
- EventLogTraceListener.cs
- ConvertersCollection.cs
- MemberExpression.cs
- ToolStripDropDownClosingEventArgs.cs
- DateTimeConverter.cs
- HashAlgorithm.cs
- CLRBindingWorker.cs
- WSDualHttpBindingElement.cs
- ConvertersCollection.cs
- URLAttribute.cs
- recordstatescratchpad.cs
- DesignerLinkAdapter.cs
- ListBox.cs
- LockCookie.cs
- EmptyEnumerator.cs
- TypeBuilder.cs
- NavigationProperty.cs
- DataGridTextColumn.cs
- FragmentQuery.cs
- MouseButton.cs
- QueryParameter.cs
- BaseParser.cs
- PriorityQueue.cs
- Geometry.cs
- ThumbButtonInfo.cs
- XmlSchemaGroupRef.cs
- TypeSystemHelpers.cs
- NotImplementedException.cs
- RenderOptions.cs
- xamlnodes.cs