Поделиться через


Чтение 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 Core и Core DOM уровня 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 следует использовать класс.

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

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

IXPathNavigable Реализация значение CanEdit
XPathDocument false
XmlDocument true

См. также