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
- DataObjectMethodAttribute.cs
- SafeRightsManagementPubHandle.cs
- TextServicesCompartmentEventSink.cs
- JournalEntry.cs
- TreeNode.cs
- PointLightBase.cs
- RangeValidator.cs
- HttpListenerException.cs
- Queue.cs
- PersianCalendar.cs
- SecurityCriticalDataForSet.cs
- ResourceDescriptionAttribute.cs
- ColumnMapVisitor.cs
- DrawingAttributeSerializer.cs
- HostProtectionPermission.cs
- XmlCompatibilityReader.cs
- SpoolingTask.cs
- CalculatedColumn.cs
- IFormattable.cs
- SevenBitStream.cs
- StyleSheetComponentEditor.cs
- SignedXmlDebugLog.cs
- PhysicalOps.cs
- ToolTipAutomationPeer.cs
- TraceData.cs
- ErrorLog.cs
- FixedSOMPage.cs
- ApplicationServiceManager.cs
- HttpGetProtocolReflector.cs
- ControlEvent.cs
- BaseCollection.cs
- OverflowException.cs
- PenContexts.cs
- ToolStripDropDownClosedEventArgs.cs
- IriParsingElement.cs
- ExpressionConverter.cs
- GridPattern.cs
- sitestring.cs
- TrustSection.cs
- TypeSystem.cs
- TabItemAutomationPeer.cs
- _HeaderInfoTable.cs
- CompiledXpathExpr.cs
- Profiler.cs
- GenerateTemporaryTargetAssembly.cs
- SqlTypesSchemaImporter.cs
- PropertyPath.cs
- SqlTypeSystemProvider.cs
- FactoryRecord.cs
- GraphicsState.cs
- ListView.cs
- FillRuleValidation.cs
- URLMembershipCondition.cs
- AppDomain.cs
- URIFormatException.cs
- ContentPlaceHolder.cs
- FileLevelControlBuilderAttribute.cs
- FocusManager.cs
- RIPEMD160Managed.cs
- ClockGroup.cs
- HttpDebugHandler.cs
- SqlDuplicator.cs
- CollectionViewSource.cs
- XmlIgnoreAttribute.cs
- DataStreamFromComStream.cs
- Form.cs
- ProfilePropertySettingsCollection.cs
- AssemblyGen.cs
- TableLayoutSettingsTypeConverter.cs
- DoubleLinkList.cs
- EventLogPermissionAttribute.cs
- FormViewRow.cs
- ObjectDataSourceStatusEventArgs.cs
- ScriptModule.cs
- Environment.cs
- TypeDelegator.cs
- Util.cs
- InternalCache.cs
- ListControl.cs
- ProfileInfo.cs
- StylusShape.cs
- ColumnHeaderCollectionEditor.cs
- PrePrepareMethodAttribute.cs
- AsyncStreamReader.cs
- HttpStreamMessageEncoderFactory.cs
- UIElement.cs
- CacheSection.cs
- DependencyObjectPropertyDescriptor.cs
- FacetValues.cs
- ThrowHelper.cs
- SpellerStatusTable.cs
- CultureInfo.cs
- ObjectRef.cs
- PasswordTextContainer.cs
- SharedConnectionWorkflowTransactionService.cs
- ECDiffieHellmanCng.cs
- IDataContractSurrogate.cs
- CustomGrammar.cs
- IIS7UserPrincipal.cs
- NavigationHelper.cs