Пример #1
0
        private XmlReader CreateXmlReader(TextReader textReader, XamlXmlReaderSettings settings)
        {
            bool closeInput = (settings != null) && settings.CloseInput;

            return(XmlReader.Create(textReader, new XmlReaderSettings {
                CloseInput = closeInput, DtdProcessing = DtdProcessing.Prohibit
            }));
        }
Пример #2
0
 public XamlXmlReader(TextReader textReader, XamlXmlReaderSettings settings)
 {
     if (textReader == null)
     {
         throw new ArgumentNullException(nameof(textReader));
     }
     Initialize(CreateXmlReader(textReader, settings), null, settings);
 }
Пример #3
0
 public XamlXmlReader(Stream stream, XamlXmlReaderSettings settings)
 {
     if (stream == null)
     {
         throw new ArgumentNullException(nameof(stream));
     }
     Initialize(CreateXmlReader(stream, settings), null, settings);
 }
Пример #4
0
        private XmlReader CreateXmlReader(string fileName, XamlXmlReaderSettings settings)
        {
            bool closeInput = (settings == null) ? true : settings.CloseInput;

            return(XmlReader.Create(fileName, new XmlReaderSettings {
                CloseInput = closeInput, DtdProcessing = DtdProcessing.Prohibit
            }));
        }
Пример #5
0
        public XamlXmlReader(string fileName, XamlXmlReaderSettings settings)
        {
            if (fileName == null)
            {
                throw new ArgumentNullException(nameof(fileName));
            }

            Initialize(CreateXmlReader(fileName, settings), null, settings);
        }
Пример #6
0
        public XamlXmlReader(XmlReader xmlReader, XamlXmlReaderSettings settings)
        {
            if (xmlReader == null)
            {
                throw new ArgumentNullException(nameof(xmlReader));
            }

            Initialize(xmlReader, null, settings);
        }
Пример #7
0
        public XamlXmlReader(XmlReader xmlReader, XamlSchemaContext schemaContext, XamlXmlReaderSettings settings)
        {
            if (schemaContext == null)
            {
                throw new ArgumentNullException(nameof(schemaContext));
            }
            if (xmlReader == null)
            {
                throw new ArgumentNullException(nameof(xmlReader));
            }

            Initialize(xmlReader, schemaContext, settings);
        }
Пример #8
0
        public XamlXmlReader(Stream stream, XamlSchemaContext schemaContext, XamlXmlReaderSettings settings)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }
            if (schemaContext == null)
            {
                throw new ArgumentNullException(nameof(schemaContext));
            }

            Initialize(CreateXmlReader(stream, settings), schemaContext, settings);
        }
 public XamlXmlReaderSettings(XamlXmlReaderSettings settings)
     : base(settings)
 {
     if (settings != null)
     {
         if (settings._xmlnsDictionary != null)
         {
             _xmlnsDictionary = new Dictionary <string, string>(settings._xmlnsDictionary);
         }
         XmlLang          = settings.XmlLang;
         XmlSpacePreserve = settings.XmlSpacePreserve;
         SkipXmlCompatibilityProcessing = settings.SkipXmlCompatibilityProcessing;
         CloseInput = settings.CloseInput;
     }
 }
Пример #10
0
        private void Initialize(XmlReader givenXmlReader, XamlSchemaContext schemaContext, XamlXmlReaderSettings settings)
        {
            XmlReader myXmlReader;

            _mergedSettings = (settings == null) ? new XamlXmlReaderSettings() : new XamlXmlReaderSettings(settings);
            //Wrap the xmlreader with a XmlCompatReader instance to apply MarkupCompat rules.
            if (!_mergedSettings.SkipXmlCompatibilityProcessing)
            {
                XmlCompatibilityReader mcReader =
                    new XmlCompatibilityReader(givenXmlReader,
                                               new IsXmlNamespaceSupportedCallback(IsXmlNamespaceSupported)
                                               );
                mcReader.Normalization = true;
                myXmlReader            = mcReader;
            }
            else
            {   //Don't wrap the xmlreader with XmlCompatReader.
                // Useful for uses where users want to keep mc: content in the XamlNode stream.
                // Or have already processed the markup compat and want that extra perf.
                myXmlReader = givenXmlReader;
            }
            // Pick up the XmlReader settings to override the "settings" defaults.
            if (!String.IsNullOrEmpty(myXmlReader.BaseURI))
            {
                _mergedSettings.BaseUri = new Uri(myXmlReader.BaseURI);
            }
            if (myXmlReader.XmlSpace == XmlSpace.Preserve)
            {
                _mergedSettings.XmlSpacePreserve = true;
            }
            if (!String.IsNullOrEmpty(myXmlReader.XmlLang))
            {
                _mergedSettings.XmlLang = myXmlReader.XmlLang;
            }
            IXmlNamespaceResolver       myXmlReaderNS   = myXmlReader as IXmlNamespaceResolver;
            Dictionary <string, string> xmlnsDictionary = null;

            if (myXmlReaderNS != null)
            {
                IDictionary <string, string> rootNamespaces = myXmlReaderNS.GetNamespacesInScope(XmlNamespaceScope.Local);
                if (rootNamespaces != null)
                {
                    foreach (KeyValuePair <string, string> ns in rootNamespaces)
                    {
                        if (xmlnsDictionary == null)
                        {
                            xmlnsDictionary = new Dictionary <string, string>();
                        }
                        xmlnsDictionary[ns.Key] = ns.Value;
                    }
                }
            }

            if (schemaContext == null)
            {
                schemaContext = new XamlSchemaContext();
            }

            _endOfStreamNode = new XamlNode(XamlNode.InternalNodeType.EndOfStream);

            _context = new XamlParserContext(schemaContext, _mergedSettings.LocalAssembly);
            _context.AllowProtectedMembersOnRoot = _mergedSettings.AllowProtectedMembersOnRoot;
            _context.AddNamespacePrefix(KnownStrings.XmlPrefix, XamlLanguage.Xml1998Namespace);

            Func <string, string> namespaceResolver = myXmlReader.LookupNamespace;

            _context.XmlNamespaceResolver = namespaceResolver;

            XamlScanner    xamlScanner = new XamlScanner(_context, myXmlReader, _mergedSettings);
            XamlPullParser parser      = new XamlPullParser(_context, xamlScanner, _mergedSettings);

            _nodeStream      = new NodeStreamSorter(_context, parser, _mergedSettings, xmlnsDictionary);
            _current         = new XamlNode(XamlNode.InternalNodeType.StartOfStream); // user must call Read() before using properties.
            _currentLineInfo = new LineInfo(0, 0);
        }