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
- ConfigXmlComment.cs
- CellIdBoolean.cs
- XmlAttributeCache.cs
- ToolStripManager.cs
- CommandEventArgs.cs
- ColorDialog.cs
- IgnoreSection.cs
- XmlMtomWriter.cs
- ViewPort3D.cs
- ExpressionBinding.cs
- ManipulationDevice.cs
- ObjectMaterializedEventArgs.cs
- DataPager.cs
- ReliabilityContractAttribute.cs
- XmlEncoding.cs
- TextEditorThreadLocalStore.cs
- SByteStorage.cs
- RsaSecurityTokenAuthenticator.cs
- TraceAsyncResult.cs
- GlyphTypeface.cs
- HttpCacheVary.cs
- ServiceModelReg.cs
- StreamWithDictionary.cs
- FieldNameLookup.cs
- DataGridViewComboBoxColumn.cs
- MetadataUtil.cs
- SecurityException.cs
- InOutArgument.cs
- ThemeableAttribute.cs
- StickyNote.cs
- ModelPropertyCollectionImpl.cs
- HtmlInputButton.cs
- ConfigurationValues.cs
- ImportContext.cs
- WebEvents.cs
- IPEndPoint.cs
- StickyNoteContentControl.cs
- MarkupCompiler.cs
- Activity.cs
- AttributeParameterInfo.cs
- Adorner.cs
- FixUp.cs
- Size3D.cs
- AsynchronousChannel.cs
- AdRotator.cs
- ILGenerator.cs
- XmlDocumentType.cs
- Icon.cs
- keycontainerpermission.cs
- SetState.cs
- TraceSource.cs
- DataMember.cs
- InputLanguageManager.cs
- Matrix3D.cs
- WindowsRichEditRange.cs
- GridViewRowPresenterBase.cs
- SqlServices.cs
- WorkItem.cs
- ClientUIRequest.cs
- _SingleItemRequestCache.cs
- HotSpotCollection.cs
- ZoomingMessageFilter.cs
- BindingsSection.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- TableLayoutColumnStyleCollection.cs
- FilteredDataSetHelper.cs
- MessagePropertyDescription.cs
- Msec.cs
- DefaultValueAttribute.cs
- ScriptReference.cs
- CallbackBehaviorAttribute.cs
- ListView.cs
- CodeTypeConstructor.cs
- ForceCopyBuildProvider.cs
- SiteMapSection.cs
- StylusEventArgs.cs
- KnownTypes.cs
- remotingproxy.cs
- ScriptManagerProxy.cs
- DataGridViewRowCollection.cs
- TextRangeEditTables.cs
- FormViewModeEventArgs.cs
- DelayedRegex.cs
- PermissionAttributes.cs
- SqlMultiplexer.cs
- ResolveNextArgumentWorkItem.cs
- TextDocumentView.cs
- SqlDependencyListener.cs
- LineServicesCallbacks.cs
- FunctionQuery.cs
- DbConnectionPool.cs
- HyperLink.cs
- AppSettings.cs
- IdnElement.cs
- FontStyle.cs
- WebColorConverter.cs
- DataGridLinkButton.cs
- MatrixCamera.cs
- MeshGeometry3D.cs
- X500Name.cs