// Initializes a new instance of the XmlTextReaderImpl class with the specified arguments. // This constructor is used when creating XmlTextReaderImpl via XmlReader.Create internal XmlTextReaderImpl(Stream stream, byte[] bytes, int byteCount, XmlReaderSettings settings, Uri baseUri, string baseUriStr, XmlParserContext context, bool closeInput) : this(settings.GetXmlResolver(), settings, context) { // get BaseUri from XmlParserContext if (context != null) { if (context.BaseURI != null && context.BaseURI.Length > 0 && !UriEqual(baseUri, baseUriStr, context.BaseURI, settings.GetXmlResolver())) { if (baseUriStr.Length > 0) { Throw(SR.Xml_DoubleBaseUri); } Debug.Assert(baseUri == null); baseUriStr = context.BaseURI; } } _reportedBaseUri = baseUriStr; _closeInput = closeInput; _laterInitParam = new LaterInitParam(); _laterInitParam.inputStream = stream; _laterInitParam.inputBytes = bytes; _laterInitParam.inputByteCount = byteCount; _laterInitParam.inputbaseUri = baseUri; _laterInitParam.inputContext = context; _laterInitParam.initType = InitInputType.Stream; if (!settings.Async) { //if not set Async flag, finish the init in create stage. FinishInitStream(); } else { _laterInitParam.useAsync = true; } }
// Initializes a new instance of the XmlTextReaderImpl class with the specified arguments. // This constructor is used when creating XmlTextReaderImpl via XmlReader.Create internal XmlTextReaderImpl(TextReader input, XmlReaderSettings settings, string baseUriStr, XmlParserContext context) : this(settings.GetXmlResolver(), settings, context) { // get BaseUri from XmlParserContext if (context != null) { Debug.Assert(baseUriStr == string.Empty, "BaseURI can come either from XmlParserContext or from the constructor argument, not from both"); if (context.BaseURI != null) { baseUriStr = context.BaseURI; } } _reportedBaseUri = baseUriStr; _closeInput = settings.CloseInput; _laterInitParam = new LaterInitParam(); _laterInitParam.inputTextReader = input; _laterInitParam.inputContext = context; _laterInitParam.initType = InitInputType.TextReader; if (!settings.Async) { //if not set Async flag, finish the init in create stage. FinishInitTextReader(); } else { _laterInitParam.useAsync = true; } }
// Initializes a new instance of the XmlTextReaderImpl class with the specified arguments. // This constructor is used when creating XmlTextReaderImpl via XmlReader.Create internal XmlTextReaderImpl(string uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver) : this(settings.GetXmlResolver(), settings, context) { Uri baseUri = uriResolver.ResolveUri(null, uriStr); string baseUriStr = baseUri.ToString(); // get BaseUri from XmlParserContext if (context != null) { if (context.BaseURI != null && context.BaseURI.Length > 0 && !UriEqual(baseUri, baseUriStr, context.BaseURI, settings.GetXmlResolver())) { if (baseUriStr.Length > 0) { Throw(SR.Xml_DoubleBaseUri); } Debug.Assert(baseUri == null); baseUriStr = context.BaseURI; } } _reportedBaseUri = baseUriStr; _closeInput = true; _laterInitParam = new LaterInitParam(); _laterInitParam.inputUriStr = uriStr; _laterInitParam.inputbaseUri = baseUri; _laterInitParam.inputContext = context; _laterInitParam.inputUriResolver = uriResolver; _laterInitParam.initType = InitInputType.UriString; if (!settings.Async) { //if not set Async flag, finish the init in create stage. FinishInitUriString(); } else { _laterInitParam.useAsync = true; } }
private static XmlReader CreateReaderImpl(XmlReader baseReader, XmlReaderSettings settings) { Debug.Assert(baseReader != null); Debug.Assert(settings != null); XmlReader reader = baseReader; // wrap with DTD validating reader if (settings.ValidationType == ValidationType.DTD) { reader = CreateDtdValidatingReader(reader, settings); } // add conformance checking (must go after DTD validation because XmlValidatingReader works only on XmlTextReader), // but before XSD validation because of typed value access reader = AddWrapper(reader, settings, reader.Settings); if (settings.ValidationType == ValidationType.Schema) { reader = new XsdValidatingReader(reader, settings.GetXmlResolver(), settings); } return reader; }
private static XmlReader AddValidation( XmlReader reader, XmlReaderSettings settings ) { if (settings.ValidationType == ValidationType.Schema) { reader = new XsdValidatingReader(reader, settings.GetXmlResolver(), settings); } else if (settings.ValidationType == ValidationType.DTD) { reader = CreateDtdValidatingReader(reader, settings); } return reader; }
// Initializes a new instance of the XmlTextReaderImpl class with the specified arguments. // This constructor is used when creating XmlTextReaderImpl via XmlReader.Create internal XmlTextReaderImpl( TextReader input, XmlReaderSettings settings, string baseUriStr, XmlParserContext context ) : this( settings.GetXmlResolver(), settings, context ) { // get BaseUri from XmlParserContext if ( context != null ) { Debug.Assert( baseUriStr == string.Empty, "BaseURI can come either from XmlParserContext or from the constructor argument, not from both" ); if ( context.BaseURI != null ) { baseUriStr = context.BaseURI; } } // init ParsingState InitTextReaderInput( baseUriStr, input ); this.closeInput = settings.CloseInput; reportedBaseUri = ps.baseUriStr; reportedEncoding = ps.encoding; // parse DTD if ( context != null && context.HasDtdInfo ) { if ( prohibitDtd ) { ThrowWithoutLineInfo( Res.Xml_DtdIsProhibitedEx, string.Empty ); } ParseDtdFromParserContext(); } }
// Initializes a new instance of the XmlTextReaderImpl class with the specified arguments. // This constructor is used when creating XmlTextReaderImpl via XmlReader.Create internal XmlTextReaderImpl( Stream stream, byte[] bytes, int byteCount, XmlReaderSettings settings, Uri baseUri, string baseUriStr, XmlParserContext context, bool closeInput ) : this( settings.GetXmlResolver(), settings, context ) { Encoding enc = null; // get BaseUri and Encoding from XmlParserContext if ( context != null ) { if ( context.BaseURI != null && context.BaseURI.Length > 0 && !UriEqual( baseUri, baseUriStr, context.BaseURI, settings.GetXmlResolver() ) ) { if ( baseUriStr.Length > 0 ) { Throw( Res.Xml_DoubleBaseUri ); } Debug.Assert( baseUri == null ); baseUriStr = context.BaseURI; } enc = context.Encoding; } // init ParsingState InitStreamInput( baseUri, baseUriStr, stream, bytes, byteCount, enc ); this.closeInput = closeInput; reportedBaseUri = ps.baseUriStr; reportedEncoding = ps.encoding; // parse DTD if ( context != null && context.HasDtdInfo ) { if ( prohibitDtd ) { ThrowWithoutLineInfo( Res.Xml_DtdIsProhibitedEx, string.Empty ); } ParseDtdFromParserContext(); } }