Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / XPathMessageFilterElement.cs / 1 / XPathMessageFilterElement.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Configuration { using System; using System.Configuration; using System.Globalization; using System.IO; using System.ServiceModel.Channels; using System.ServiceModel.Dispatcher; using System.Xml; using System.Xml.Serialization; using System.Text; public sealed partial class XPathMessageFilterElement : ConfigurationElement { const int DefaultNodeQuota = 1000; [ConfigurationProperty(ConfigurationStrings.Filter, DefaultValue = null, Options = ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey)] public XPathMessageFilter Filter { get { return (XPathMessageFilter)base[ConfigurationStrings.Filter]; } set { base[ConfigurationStrings.Filter] = value; } } protected override void DeserializeElement(XmlReader reader, bool serializeCollectionKey) { StringBuilder filterStringBuilder = new StringBuilder(); string nodeQuotaStringValue = String.Empty; XmlWriterSettings settings = new XmlWriterSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; settings.OmitXmlDeclaration = false; using (XmlWriter tempWriter = XmlWriter.Create(filterStringBuilder, settings)) { tempWriter.WriteStartElement(reader.Name); if (0 < reader.AttributeCount) { for (int i = 0; i < reader.AttributeCount; i++) { reader.MoveToAttribute(i); if (reader.Name.Equals(ConfigurationStrings.NodeQuota, StringComparison.Ordinal)) { nodeQuotaStringValue = reader.Value; } else { if (reader.Name.Contains(":")) { string[] attributeName = reader.Name.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); tempWriter.WriteAttributeString(attributeName[0], attributeName[1], null, reader.Value); } else { tempWriter.WriteAttributeString(reader.Name, reader.Value); } } } reader.MoveToElement(); } string filterString = reader.ReadString(); filterString = filterString.Trim(); if (String.IsNullOrEmpty(filterString)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.ConfigXPathFilterMustNotBeEmpty))); } tempWriter.WriteString(filterString); tempWriter.WriteEndElement(); } XPathMessageFilter filter = null; using (StringReader stringReader = new StringReader(filterStringBuilder.ToString())) { using (XmlReader tempReader = XmlReader.Create(stringReader)) { filter = new XPathMessageFilter(tempReader); } } if (null != filter) { if (!String.IsNullOrEmpty(nodeQuotaStringValue)) { filter.NodeQuota = int.Parse(nodeQuotaStringValue, CultureInfo.CurrentCulture); } else { filter.NodeQuota = XPathMessageFilterElement.DefaultNodeQuota; } } this.Filter = filter; } protected override bool SerializeToXmlElement(XmlWriter writer, String elementName) { bool dataToWrite = this.Filter != null; if (dataToWrite && writer != null) { //this.Filter.WriteXPathTo(writer, null, elementName, null, true); writer.WriteStartElement(elementName); writer.WriteAttributeString(ConfigurationStrings.NodeQuota, Filter.NodeQuota.ToString(NumberFormatInfo.CurrentInfo)); StringBuilder filterStringBuilder = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; settings.OmitXmlDeclaration = false; using (XmlWriter tempWriter = XmlWriter.Create(filterStringBuilder, settings)) { this.Filter.WriteXPathTo(tempWriter, null, elementName, null, true); } using(StringReader stringReader = new StringReader(filterStringBuilder.ToString())) { using (XmlReader tempReader = XmlReader.Create(stringReader)) { if (tempReader.Read()) { if (0 < tempReader.AttributeCount) { for (int i = 0; i < tempReader.AttributeCount; i++) { tempReader.MoveToAttribute(i); writer.WriteAttributeString(tempReader.Name, tempReader.Value); } tempReader.MoveToElement(); } writer.WriteString(tempReader.ReadString()); } } } writer.WriteEndElement(); } return dataToWrite; } } } // 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
- DataContractSerializerMessageContractImporter.cs
- XmlChildNodes.cs
- ChangePassword.cs
- DataGridViewCheckBoxColumn.cs
- DbParameterCollection.cs
- LineServicesRun.cs
- DesignerView.Commands.cs
- FlowDocumentPaginator.cs
- NavigationFailedEventArgs.cs
- FusionWrap.cs
- DBSchemaRow.cs
- CodeFieldReferenceExpression.cs
- BuildTopDownAttribute.cs
- DesignerSerializationOptionsAttribute.cs
- HtmlTableRowCollection.cs
- PersonalizationState.cs
- UniqueIdentifierService.cs
- BinaryMethodMessage.cs
- PropertyGridEditorPart.cs
- CachedPathData.cs
- MetafileHeaderWmf.cs
- UInt64.cs
- Annotation.cs
- Viewport3DAutomationPeer.cs
- EntityStoreSchemaFilterEntry.cs
- CommandConverter.cs
- Publisher.cs
- MailDefinition.cs
- TypeCodeDomSerializer.cs
- processwaithandle.cs
- ColorTransform.cs
- BinaryOperationBinder.cs
- DynamicObject.cs
- BrowserCapabilitiesFactory.cs
- AsyncPostBackErrorEventArgs.cs
- ErrorStyle.cs
- DataAdapter.cs
- HtmlInputSubmit.cs
- CommandLibraryHelper.cs
- DataColumnMapping.cs
- ELinqQueryState.cs
- XamlTypeMapper.cs
- AccessDataSourceView.cs
- ManagementDateTime.cs
- MULTI_QI.cs
- SimpleHandlerFactory.cs
- UDPClient.cs
- TextParaLineResult.cs
- SecureConversationDriver.cs
- SafeNativeMethods.cs
- UInt64Storage.cs
- ModelItemKeyValuePair.cs
- TypedReference.cs
- ResolveNameEventArgs.cs
- UrlPath.cs
- TypeUtil.cs
- ListParagraph.cs
- CodeTypeReferenceCollection.cs
- PropertyIDSet.cs
- PnrpPermission.cs
- Rect.cs
- DataGridViewRowCancelEventArgs.cs
- BooleanExpr.cs
- CoreSwitches.cs
- MouseButtonEventArgs.cs
- RuntimeConfigLKG.cs
- BrowserDefinition.cs
- EventLogHandle.cs
- DataSvcMapFileSerializer.cs
- DbParameterHelper.cs
- RemotingConfigParser.cs
- UncommonField.cs
- Delegate.cs
- RelatedPropertyManager.cs
- MD5.cs
- IUnknownConstantAttribute.cs
- _CacheStreams.cs
- NumberFormatInfo.cs
- AssemblyNameProxy.cs
- RoleServiceManager.cs
- Pair.cs
- CryptoApi.cs
- SemaphoreSecurity.cs
- XmlSignificantWhitespace.cs
- FileCodeGroup.cs
- SessionParameter.cs
- ChannelBase.cs
- ButtonChrome.cs
- SimpleApplicationHost.cs
- DBCSCodePageEncoding.cs
- JavascriptCallbackBehaviorAttribute.cs
- DesigntimeLicenseContextSerializer.cs
- Mappings.cs
- AppModelKnownContentFactory.cs
- SID.cs
- EventNotify.cs
- ComboBoxDesigner.cs
- InputScopeAttribute.cs
- ArithmeticLiteral.cs
- DrawingImage.cs