Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XmlComplianceUtil.cs / 1305376 / XmlComplianceUtil.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.IO; namespace System.Xml { using System.Text; internal static class XmlComplianceUtil { // Replaces \r\n, \n, \r and \t with single space (0x20) and then removes spaces // at the beggining and and the end of the string and replaces sequences of spaces // with a single space. public static string NonCDataNormalize( string value ) { int len = value.Length; if ( len <= 0 ) { return string.Empty; } int startPos = 0; StringBuilder norValue = null; XmlCharType xmlCharType = XmlCharType.Instance; while ( xmlCharType.IsWhiteSpace( value[startPos] ) ) { startPos++; if ( startPos == len ) { return " "; } } int i = startPos; while ( i < len ) { if ( !xmlCharType.IsWhiteSpace( value[i] ) ) { i++; continue; } int j = i + 1; while ( j < len && xmlCharType.IsWhiteSpace( value[j] ) ) { j++; } if ( j == len ) { if ( norValue == null ) { return value.Substring( startPos, i - startPos ); } else { norValue.Append( value, startPos, i - startPos ); return norValue.ToString(); } } if (j > i + 1 || value[i] != 0x20 ) { if ( norValue == null ) { norValue = new StringBuilder( len ); } norValue.Append( value, startPos, i - startPos ); norValue.Append( (char)0x20 ); startPos = j; i = j; } else { i++; } } if ( norValue != null ) { if ( startPos < i ) { norValue.Append( value, startPos, i - startPos ); } return norValue.ToString(); } else { if ( startPos > 0 ) { return value.Substring( startPos, len - startPos ); } else { return value; } } } // Replaces \r\n, \n, \r and \t with single space (0x20) public static string CDataNormalize( string value ) { int len = value.Length; if ( len <= 0 ) { return string.Empty; } int i = 0; int startPos = 0; StringBuilder norValue = null; while ( i < len ) { char ch = value[i]; if ( ch >= 0x20 || ( ch != 0x9 && ch != 0xA && ch != 0xD ) ) { i++; continue; } if ( norValue == null ) { norValue = new StringBuilder( len ); } if ( startPos < i ) { norValue.Append( value, startPos, i - startPos ); } norValue.Append( (char)0x20 ); if ( ch == 0xD && ( i+1 < len && value[i+1] == 0xA ) ) { i += 2; } else { i++; } startPos = i; } if ( norValue == null ) { return value; } else { if ( i > startPos ) { norValue.Append(value, startPos, i-startPos); } return norValue.ToString(); } } public static bool IsValidLanguageID( char[] value, int startPos, int length ) { int len = length; if ( len < 2 ) { return false; } bool fSeenLetter = false; int i = startPos; XmlCharType xmlCharType = XmlCharType.Instance; char ch = value[i]; if ( xmlCharType.IsLetter(ch) ) { if ( xmlCharType.IsLetter( value[++i] ) ) { if ( len == 2 ) { return true; } len--; i++; } else if ( ('I' != ch && 'i' != ch ) && ( 'X' != ch && 'x' != ch ) ) { //IANA or custom Code return false; } if ( value[i] != '-' ) { return false; } len -= 2; while ( len-- > 0 ) { ch = value[++i]; if ( xmlCharType.IsLetter( ch ) ) { fSeenLetter = true; } else if ( ch == '-' && fSeenLetter ) { fSeenLetter = false; } else { return false; } } if ( fSeenLetter ) { 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
- AccessDataSourceView.cs
- WebBrowserProgressChangedEventHandler.cs
- PropertySourceInfo.cs
- CallbackValidator.cs
- XmlEnumAttribute.cs
- MimeReflector.cs
- FrameDimension.cs
- RangeBaseAutomationPeer.cs
- MsmqIntegrationSecurityMode.cs
- XmlSchemaDatatype.cs
- CompositeFontFamily.cs
- PieceNameHelper.cs
- SafeSecurityHandles.cs
- StateDesignerConnector.cs
- IUnknownConstantAttribute.cs
- DbReferenceCollection.cs
- SyntaxCheck.cs
- WindowsStatic.cs
- OracleParameterCollection.cs
- WebServiceErrorEvent.cs
- XmlIgnoreAttribute.cs
- EmptyStringExpandableObjectConverter.cs
- CodeSnippetStatement.cs
- IdleTimeoutMonitor.cs
- InlinedAggregationOperator.cs
- OrderedHashRepartitionEnumerator.cs
- filewebresponse.cs
- SqlTopReducer.cs
- ProfileSettingsCollection.cs
- Camera.cs
- SettingsBindableAttribute.cs
- DatatypeImplementation.cs
- FrameworkRichTextComposition.cs
- CryptoApi.cs
- HiddenField.cs
- Util.cs
- DefaultClaimSet.cs
- Aes.cs
- DataRowView.cs
- TimeoutValidationAttribute.cs
- FixedPageAutomationPeer.cs
- InstanceKeyNotReadyException.cs
- Margins.cs
- PasswordDeriveBytes.cs
- CodeChecksumPragma.cs
- GlyphShapingProperties.cs
- HiddenFieldPageStatePersister.cs
- XmlSchemaExporter.cs
- WsdlBuildProvider.cs
- COM2TypeInfoProcessor.cs
- DockProviderWrapper.cs
- Root.cs
- ToolBarButton.cs
- HttpPostedFile.cs
- ConfigurationValidatorAttribute.cs
- TypographyProperties.cs
- CodeVariableReferenceExpression.cs
- TreeWalkHelper.cs
- NumericExpr.cs
- CfgParser.cs
- GridViewEditEventArgs.cs
- XPathDocument.cs
- DataServiceQueryException.cs
- DocumentViewer.cs
- HtmlTableRow.cs
- CollectionViewSource.cs
- ComponentEditorPage.cs
- GenericRootAutomationPeer.cs
- XmlBinaryWriterSession.cs
- ToolStripMenuItem.cs
- UInt16Storage.cs
- streamingZipPartStream.cs
- CharacterString.cs
- _Win32.cs
- SafeCertificateStore.cs
- LinqDataSourceView.cs
- AccessViolationException.cs
- MDIControlStrip.cs
- CompilerResults.cs
- EventData.cs
- DependencyPropertyKey.cs
- ClientTargetSection.cs
- IItemContainerGenerator.cs
- WebServiceEnumData.cs
- FixedFindEngine.cs
- NativeRightsManagementAPIsStructures.cs
- SspiWrapper.cs
- Int32Collection.cs
- EntityDataSourceUtil.cs
- StringArrayConverter.cs
- QEncodedStream.cs
- ConsoleTraceListener.cs
- XamlStyleSerializer.cs
- ContextMenuStrip.cs
- QilXmlReader.cs
- WebCategoryAttribute.cs
- IgnoreSectionHandler.cs
- Point4D.cs
- GPRECTF.cs
- NetNamedPipeBinding.cs