Чтение XML-данных с помощью XPathDocument и XmlDocument
Обновлен: November 2007
Существует два способа чтения XML-документа в пространстве имен System.Xml.XPath. Один — считывание XML-документа с использованием доступного только для чтения класса XPathDocument, а другой — считывание XML-документа с использованием редактируемого класса XmlDocument в пространстве имен System.Xml.
Чтение XML-документов с использованием класса XPathDocument
Класс XPathDocument обеспечивает быстрое и доступное только для чтения представление XML-документа в памяти с использованием модели данных XPath. Экземпляры класса XPathDocument создаются с использованием одного из шести конструкторов. Эти конструкторы позволяют прочитать XML-документ с использованием как объектов Stream, TextReader или XmlReader, так и строкового пути к XML-файлу.
В следующем примере продемонстрировано использование конструктора string класса XPathDocument для чтения XML-документа.
Чтение XML-документов с помощью класса XmlDocument
Класс XmlDocument является редактируемым представлением в памяти XML-документа, реализующего объектную модель DOM базового уровня 1 и модель DOM уровня 2 консорциума W3C. Экземпляры класса XmlDocument создаются с помощью одного из трех конструкторов. Можно создать новый, пустой объект XmlDocument путем вызова конструктора класса XmlDocument без параметров. После вызова конструктора используйте метод Load, чтобы загрузить XML-данные в новый объект XmlDocument из объекта Stream, TextReader или XmlReader, либо из строкового пути к 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 |
---|---|
false |
|
true |
См. также
Основные понятия
Обработка XML-данных с использованием модели данных XPath
Доступ к XML-данным с помощью класса XPathNavigator
Изменение XML-данных с помощью XPathNavigator
Проверка по схеме с помощью XPathNavigator