<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.7.0" />

ConfigXmlDocument

Wraps the corresponding XmlDocument type and also carries the necessary information for reporting file-name and line numbers.
using System.Configuration.Internal; using System.IO; using System.Xml; namespace System.Configuration { public sealed class ConfigXmlDocument : XmlDocument, IConfigErrorInfo { private XmlTextReader _reader; private int _lineOffset; private string _filename; int IConfigErrorInfo.LineNumber { get { if (_reader == null) return 0; if (_lineOffset > 0) return _reader.LineNumber + _lineOffset - 1; return _reader.LineNumber; } } public int LineNumber => ((IConfigErrorInfo)this).LineNumber; public string Filename => _filename; string IConfigErrorInfo.Filename { get { return _filename; } } public override void Load(string filename) { _filename = filename; try { _reader = new XmlTextReader(filename); _reader.XmlResolver = null; base.Load(_reader); } finally { if (_reader != null) { _reader.Close(); _reader = null; } } } public void LoadSingleElement(string filename, XmlTextReader sourceReader) { _filename = filename; _lineOffset = sourceReader.LineNumber; string s = sourceReader.ReadOuterXml(); try { _reader = new XmlTextReader(new StringReader(s), sourceReader.NameTable); base.Load(_reader); } finally { if (_reader != null) { _reader.Close(); _reader = null; } } } public override XmlAttribute CreateAttribute(string prefix, string localName, string namespaceUri) { return new ConfigXmlAttribute(_filename, LineNumber, prefix, localName, namespaceUri, this); } public override XmlElement CreateElement(string prefix, string localName, string namespaceUri) { return new ConfigXmlElement(_filename, LineNumber, prefix, localName, namespaceUri, this); } public override XmlText CreateTextNode(string text) { return new ConfigXmlText(_filename, LineNumber, text, this); } public override XmlCDataSection CreateCDataSection(string data) { return new ConfigXmlCDataSection(_filename, LineNumber, data, this); } public override XmlComment CreateComment(string data) { return new ConfigXmlComment(_filename, LineNumber, data, this); } public override XmlSignificantWhitespace CreateSignificantWhitespace(string data) { return new ConfigXmlSignificantWhitespace(_filename, LineNumber, data, this); } public override XmlWhitespace CreateWhitespace(string data) { return new ConfigXmlWhitespace(_filename, LineNumber, data, this); } } }