File: System\Xml\Core\XmlParserContext.cs
Web Access
Project: src\src\libraries\System.Private.Xml\src\System.Private.Xml.csproj (System.Private.Xml)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using System.Xml;
 
namespace System.Xml
{
    // Specifies the context that the XmLReader will use for xml fragment
    public class XmlParserContext
    {
        private XmlNameTable? _nt;
        private XmlNamespaceManager? _nsMgr;
        private string _docTypeName = string.Empty;
        private string _pubId = string.Empty;
        private string _sysId = string.Empty;
        private string _internalSubset = string.Empty;
        private string _xmlLang = string.Empty;
        private XmlSpace _xmlSpace;
        private string _baseURI = string.Empty;
        private Encoding? _encoding;
 
        public XmlParserContext(XmlNameTable? nt, XmlNamespaceManager? nsMgr, string? xmlLang, XmlSpace xmlSpace)
        : this(nt, nsMgr, null, null, null, null, string.Empty, xmlLang, xmlSpace)
        {
            // Intentionally Empty
        }
 
        public XmlParserContext(XmlNameTable? nt, XmlNamespaceManager? nsMgr, string? xmlLang, XmlSpace xmlSpace, Encoding? enc)
        : this(nt, nsMgr, null, null, null, null, string.Empty, xmlLang, xmlSpace, enc)
        {
            // Intentionally Empty
        }
 
        public XmlParserContext(XmlNameTable? nt, XmlNamespaceManager? nsMgr, string? docTypeName,
                  string? pubId, string? sysId, string? internalSubset, string? baseURI,
                  string? xmlLang, XmlSpace xmlSpace)
        : this(nt, nsMgr, docTypeName, pubId, sysId, internalSubset, baseURI, xmlLang, xmlSpace, null)
        {
            // Intentionally Empty
        }
 
        public XmlParserContext(XmlNameTable? nt, XmlNamespaceManager? nsMgr, string? docTypeName,
                          string? pubId, string? sysId, string? internalSubset, string? baseURI,
                          string? xmlLang, XmlSpace xmlSpace, Encoding? enc)
        {
            if (nsMgr != null)
            {
                if (nt == null)
                {
                    _nt = nsMgr.NameTable;
                }
                else
                {
                    if ((object)nt != (object?)nsMgr.NameTable)
                    {
                        throw new XmlException(SR.Xml_NotSameNametable, string.Empty);
                    }
 
                    _nt = nt;
                }
            }
            else
            {
                _nt = nt;
            }
 
            _nsMgr = nsMgr;
            _docTypeName = docTypeName ?? string.Empty;
            _pubId = pubId ?? string.Empty;
            _sysId = sysId ?? string.Empty;
            _internalSubset = internalSubset ?? string.Empty;
            _baseURI = baseURI ?? string.Empty;
            _xmlLang = xmlLang ?? string.Empty;
            _xmlSpace = xmlSpace;
            _encoding = enc;
        }
 
        public XmlNameTable? NameTable
        {
            get
            {
                return _nt;
            }
            set
            {
                _nt = value;
            }
        }
 
        public XmlNamespaceManager? NamespaceManager
        {
            get
            {
                return _nsMgr;
            }
            set
            {
                _nsMgr = value;
            }
        }
 
        [AllowNull]
        public string DocTypeName
        {
            get
            {
                return _docTypeName;
            }
            set
            {
                _docTypeName = value ?? string.Empty;
            }
        }
 
        [AllowNull]
        public string PublicId
        {
            get
            {
                return _pubId;
            }
            set
            {
                _pubId = value ?? string.Empty;
            }
        }
 
        [AllowNull]
        public string SystemId
        {
            get
            {
                return _sysId;
            }
            set
            {
                _sysId = value ?? string.Empty;
            }
        }
 
        [AllowNull]
        public string BaseURI
        {
            get
            {
                return _baseURI;
            }
            set
            {
                _baseURI = value ?? string.Empty;
            }
        }
 
        [AllowNull]
        public string InternalSubset
        {
            get
            {
                return _internalSubset;
            }
            set
            {
                _internalSubset = value ?? string.Empty;
            }
        }
 
        [AllowNull]
        public string XmlLang
        {
            get
            {
                return _xmlLang;
            }
            set
            {
                _xmlLang = value ?? string.Empty;
            }
        }
 
        public XmlSpace XmlSpace
        {
            get
            {
                return _xmlSpace;
            }
            set
            {
                _xmlSpace = value;
            }
        }
 
        public Encoding? Encoding
        {
            get
            {
                return _encoding;
            }
            set
            {
                _encoding = value;
            }
        }
 
        internal bool HasDtdInfo
        {
            get
            {
                return (_internalSubset != string.Empty || _pubId != string.Empty || _sysId != string.Empty);
            }
        }
    } // class XmlContext
} // namespace System.Xml