Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / SMDiagnostics / System / ServiceModel / Diagnostics / EncodingFallbackAwareXmlTextWriter.cs / 1305376 / EncodingFallbackAwareXmlTextWriter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Diagnostics { using System.Xml; using System.Text; using System.IO; class EncodingFallbackAwareXmlTextWriter : XmlTextWriter { Encoding encoding; internal EncodingFallbackAwareXmlTextWriter(TextWriter writer) : base(writer) { this.encoding = writer.Encoding; } public override void WriteString(string value) { if (!string.IsNullOrEmpty(value) && ContainsInvalidXmlChar(value)) { byte[] blob = encoding.GetBytes(value); value = encoding.GetString(blob); } base.WriteString(value); } bool ContainsInvalidXmlChar(string value) { if (string.IsNullOrEmpty(value)) { return false; } int i = 0; int len = value.Length; while (i < len) { if (XmlConvert.IsXmlChar(value[i])) { i++; continue; } if (i + 1 < len && XmlConvert.IsXmlSurrogatePair(value[i + 1], value[i])) { i += 2; continue; } return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Diagnostics { using System.Xml; using System.Text; using System.IO; class EncodingFallbackAwareXmlTextWriter : XmlTextWriter { Encoding encoding; internal EncodingFallbackAwareXmlTextWriter(TextWriter writer) : base(writer) { this.encoding = writer.Encoding; } public override void WriteString(string value) { if (!string.IsNullOrEmpty(value) && ContainsInvalidXmlChar(value)) { byte[] blob = encoding.GetBytes(value); value = encoding.GetString(blob); } base.WriteString(value); } bool ContainsInvalidXmlChar(string value) { if (string.IsNullOrEmpty(value)) { return false; } int i = 0; int len = value.Length; while (i < len) { if (XmlConvert.IsXmlChar(value[i])) { i++; continue; } if (i + 1 < len && XmlConvert.IsXmlSurrogatePair(value[i + 1], value[i])) { i += 2; continue; } return true; } return false; } } } // 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
- PrinterResolution.cs
- ListBoxItemWrapperAutomationPeer.cs
- MetadataCache.cs
- XmlTextAttribute.cs
- HttpServerVarsCollection.cs
- DynamicResourceExtension.cs
- CryptoHelper.cs
- DataGridView.cs
- Matrix3D.cs
- CustomValidator.cs
- IpcPort.cs
- CommandCollectionEditor.cs
- UnaryNode.cs
- BlobPersonalizationState.cs
- ConsoleTraceListener.cs
- Conditional.cs
- QuotaExceededException.cs
- HMACSHA384.cs
- InvalidEnumArgumentException.cs
- RenderingEventArgs.cs
- StateDesignerConnector.cs
- DelimitedListTraceListener.cs
- DbConnectionPoolGroupProviderInfo.cs
- ColumnMapVisitor.cs
- UInt64.cs
- XPathArrayIterator.cs
- Size3DConverter.cs
- AccessViolationException.cs
- Base64Decoder.cs
- LifetimeManager.cs
- cache.cs
- MimeAnyImporter.cs
- IntranetCredentialPolicy.cs
- Int64AnimationUsingKeyFrames.cs
- CharConverter.cs
- SchemaTableColumn.cs
- TypedDataSetSchemaImporterExtension.cs
- TailCallAnalyzer.cs
- SizeF.cs
- TcpStreams.cs
- ArrayHelper.cs
- BaseCollection.cs
- NextPreviousPagerField.cs
- ReachPageContentSerializer.cs
- CompareValidator.cs
- StackBuilderSink.cs
- BatchParser.cs
- TypeUsageBuilder.cs
- MimeMapping.cs
- CollectionConverter.cs
- SqlDataReaderSmi.cs
- WindowsRichEdit.cs
- ObjectQueryProvider.cs
- DrawItemEvent.cs
- TileModeValidation.cs
- SoapClientMessage.cs
- IndependentAnimationStorage.cs
- TransformerConfigurationWizardBase.cs
- sapiproxy.cs
- ParseChildrenAsPropertiesAttribute.cs
- EntityDataSourceState.cs
- HitTestWithPointDrawingContextWalker.cs
- ButtonColumn.cs
- CustomAttributeSerializer.cs
- Misc.cs
- DesigntimeLicenseContextSerializer.cs
- IisTraceListener.cs
- returneventsaver.cs
- _UriTypeConverter.cs
- ToolBarButton.cs
- ValueUtilsSmi.cs
- HostedTcpTransportManager.cs
- IndependentlyAnimatedPropertyMetadata.cs
- MergeLocalizationDirectives.cs
- GlobalEventManager.cs
- ProtocolViolationException.cs
- PropertyTab.cs
- DynamicEndpointElement.cs
- BevelBitmapEffect.cs
- CollectionViewGroupInternal.cs
- HttpChannelBindingToken.cs
- Int32Storage.cs
- HTMLTextWriter.cs
- Point3DAnimationUsingKeyFrames.cs
- BitSet.cs
- DelegateTypeInfo.cs
- TextModifier.cs
- StringFreezingAttribute.cs
- DataGridPagerStyle.cs
- BindableAttribute.cs
- HttpGetProtocolImporter.cs
- CalendarDataBindingHandler.cs
- WebWorkflowRole.cs
- AlternateView.cs
- XmlILTrace.cs
- DataObjectSettingDataEventArgs.cs
- CqlParserHelpers.cs
- DetailsViewUpdatedEventArgs.cs
- DoubleAnimationBase.cs
- SerialErrors.cs