Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запросы XPath учитывают пространства имен в XML-документе и могут использовать префиксы пространств имен для квалификации имен элементов и атрибутов. Имена квалифицирующих элементов и атрибутов с префиксом пространства имен ограничивают узлы, возвращаемые запросом XPath, только теми, которые относятся к конкретному пространству имен.
Например, если префикс books
сопоставляется с пространством http://www.contoso.com/books
имен, следующий запрос /books:books/books:book
XPath выбирает только те book
элементы в пространстве http://www.contoso.com/books
имен.
The XmlNamespaceManager
Чтобы использовать пространства имен в запросе XPath, объект, производный от IXmlNamespaceResolver интерфейса, например XmlNamespaceManager класса, создается с помощью URI пространства имен и префикса для включения в запрос XPath.
Объект XmlNamespaceManager может использоваться в запросе в каждом из следующих способов.
Объект XmlNamespaceManager связан с существующим XPathExpression объектом с помощью SetContext метода XPathExpression объекта. Можно также скомпилировать новый XPathExpression объект с помощью статического Compile метода, который принимает строку, представляющую выражение XPath и объект в качестве параметров и XmlNamespaceManager возвращает новый XPathExpression объект.
Сам XmlNamespaceManager объект передается в качестве параметра методу приемного XPathNavigator класса вместе со строкой, представляющей выражение XPath.
Ниже приведены методы XPathNavigator класса, который принимает объект, производный от IXmlNamespaceResolver интерфейса в качестве параметра.
Пространство имен по умолчанию
В следующем XML-документе пространство имен с пустым префиксом задается как пространство имен по умолчанию для элементов, таких как http://www.contoso.com/books
.
<books xmlns="http://www.contoso.com/books">
<book>
<title>Title</title>
<author>Author Name</author>
<price>5.50</price>
</book>
</books>
XPath обрабатывает пустой префикс как null
пространство имен. Другими словами, в запросах XPath можно использовать только префиксы, сопоставленные с пространствами имен. Это означает, что если вы хотите запросить пространство имен в XML-документе, даже если это пространство имен по умолчанию, необходимо определить префикс для него.
Например, без определения префикса для XML-документа выше запрос /books/book
XPath не вернет никаких результатов.
Префикс должен быть связан, чтобы предотвратить неоднозначность при запросе документов с некоторыми узлами, находящимися вне пространства имен, и некоторыми в пространстве имен по умолчанию.
Следующий код определяет префикс для пространства имен по умолчанию и выбирает все book
элементы из http://www.contoso.com/books
пространства имен.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim query As XPathExpression = navigator.Compile("/books:books/books:book")
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("books", "http://www.contoso.com/books")
query.SetContext(manager)
Dim nodes As XPathNodeIterator = navigator.Select(query)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression query = navigator.Compile("/books:books/books:book");
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("books", "http://www.contoso.com/books");
query.SetContext(manager);
XPathNodeIterator nodes = navigator.Select(query);
См. также
- XmlDocument
- XPathDocument
- XPathNavigator
- Обработка XML-данных с помощью модели данных XPath
- Выбор XML-данных с помощью XPathNavigator
- Оценка выражений XPath с помощью XPathNavigator
- Сопоставление узлов с помощью XPathNavigator
- Типы узлов, распознанные с помощью запросов XPath
- Скомпилированные выражения XPath