Чтение XML-данных с помощью XPathDocument и XmlDocument

Существует два способа чтения XML-документа в пространстве имен System.Xml.XPath. Один - считывание XML-документа с использованием доступного только для чтения класса XPathDocument, а другой - считывание XML-документа с использованием редактируемого класса XmlDocument в пространстве имен System.Xml.

Чтение XML-документов с использованием класса XPathDocument

Класс XPathDocument обеспечивает быстрое и доступное только для чтения представление XML-документа в памяти с использованием модели данных XPath. Экземпляры класса XPathDocument создаются с использованием одного из шести конструкторов. Эти конструкторы позволяют прочитать XML-документ с использованием как объектов Stream, TextReader или XmlReader, так и строкового string пути к XML-файлу.

В следующем примере продемонстрировано использование конструктора XPathDocument класса string для чтения XML-документа.

Dim document As XPathDocument = New XPathDocument("books.xml")  
XPathDocument document = new XPathDocument("books.xml");  

Чтение XML-документов с помощью класса XmlDocument

Класс XmlDocument представляет собой изменяемое в памяти представление XML-документа, реализующего модель W3C DOM базового уровня 1 и базового уровня 2. Экземпляры класса XmlDocument создаются с использованием одного из трех конструкторов. Можно создать новый, пустой объект XmlDocument путем вызова конструктора класса XmlDocument без параметров. После вызова конструктора используйте метод Load, чтобы загрузить XML-данные в новый объект XmlDocument из объекта Stream, TextReader или XmlReader, либо из строкового string пути к XML-файлу.

В следующем примере продемонстрировано использование конструктора класса XmlDocument без параметров и метода Load для чтения XML-документа.

Dim document As XmlDocument = New XmlDocument()  
document.Load("books.xml")  
XmlDocument document = new XmlDocument();  
document.Load("books.xml");  

Определение кодировки XML-документа

Объект XmlReader можно использовать для чтения XML-документа и создания объектов XPathDocument и XmlDocument, как показано в предыдущих разделах. Однако объект XmlReader может считывать данные, которые не закодированы и не содержат никаких сведений о кодировке.

Класс XmlTextReader наследуется от класса XmlReader и предоставляет сведения о кодировке с помощью свойства Encoding. Его можно использовать для создания объекта XPathDocument или объекта XmlDocument.

Дополнительные сведения о кодировке, предоставляемых классом XmlTextReader см. в справочной документации по свойству Encoding класса XmlTextReader.

Создание объектов XPathNavigator

После считывания XML-документа в объект XPathDocument или XmlDocument, можно создать объект XPathNavigator для выбора, оценки, навигации и, в некоторых случаях, изменения базовых XML-данных.

Как класс XPathDocument, так и XmlDocument, наряду с классом XmlNode, реализуют интерфейс IXPathNavigable пространства имен System.Xml.XPath. В результате все три класса предоставляют метод CreateNavigator, который возвращает объект XPathNavigator.

Изменение XML-документов с помощью класса XPathNavigator

Кроме выборки, оценки и навигации по XML-данным, класс XPathNavigator в некоторых случаях можно использовать для изменения XML-документа, в зависимости от создавшего его объекта.

Класс XPathDocument предназначен только для чтения, а класс XmlDocument доступен для редактирования и, в результате, объекты XPathNavigator, созданные из объекта XPathDocument, не могут быть использованы для изменения XML-документа, а созданные из объекта XmlDocument - могут. Класс XPathDocument должен использоваться только для чтения XML-документа. В случаях, когда нужно изменить XML-документ или требуется доступ к дополнительной функциональности, предоставленной классом XmlDocument, например, при обработке событий, нужно использовать класс XmlDocument.

Свойство CanEdit класса XPathNavigator указывает, может ли объект XPathNavigator изменить XML-данные.

В следующей таблице описаны значения свойства CanEdit для каждого класса.

Реализация интерфейса IXPathNavigable CanEdit Значение
XPathDocument false
XmlDocument true

См. также