ПРАКТИЧЕСКОЕ руководство: Выполнение запросов XPath с помощью классов System.Xml.XPath

Переводы статьи Переводы статьи
Код статьи: 317069 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как использовать классы в System.XML.XPath пространство имен для выполнения запросов XPath в.NET приложения.

Просмотреть пространства имен System.Xml.XPath

В System.XML.XPath пространство имен содержит парсер XPath и механизм оценки.NET Framework. В System.XML.XPath пространство имен поддерживает рекомендации консорциума World Wide Web (W3C) языка XML Path (XPath) версии 1.0. Дополнительные сведения о рекомендациях XPath посетите W3C веб-узла:
XML Path Language (XPath) версии 1.0
В System.XML.XPath пространство имен также содержит следующие классы, которые оптимизированы для выполнения запросов XPath и программное перемещение созданный результирующие наборы:
  • XPathDocument: Высокая производительность, только для чтения кэш для обработки XML-документов и потоков. XPathDocument оптимизирован для обработки таблицы стилей преобразования (XSLT) и модели данных XPath. XPathDocument использует объектную модель документов (DOM)-на основе анализа модели (загружает XML-источник в структуре дерева в памяти), но не реализуют интерфейсы, необходимые для вставки, изменения или удаления узлов в XML-документ или поток.
  • XPathNavigator: Этот класс основан на модели данных XPath. XPathNavigator Предоставляет требуемые методы для выполнения запросов XPath к XML-данных, который загружается в XPathDocument. XPathNavigator создан с помощью CreateNavigator метод XPathDocument объект. Можно также использовать XPathNavigator для компиляции выражения часто выполняемый запрос XPath и создать System.XML.XPath.XPathExpression Объект, инкапсулирующий скомпилированный запрос.
  • XPathNodeIterator: Обеспечивает итератор, предназначенному только для чтения. При использовании Выберите метод XPathNavigator объект для выполнения запроса XPath, экземпляр XPathNodeIterator будет создан. Можно использовать XPathNodeIterator для перемещения по набор результатов, создаваемый запросом XPath.
  • XPathExpression: Инкапсулирует компилированное выражение запроса XPath. Выражение запроса XPath необходимо скомпилировать для выполнения выражения запроса. Скомпилированное выражение XPath содержит синтаксис, который проверяется, чтобы соответствовать спецификации W3C языка запросов XPath. Вызов Компиляция метод XPathNavigator Возвращает объект XPathExpression класс. Как правило используют XPathExpression Предоставление предварительно скомпилированные выражения запроса XPath при вызове Выберите метод XPathNavigator объект.
  • XPathException:.NET Framework исключение, которое генерируется при возникновении ошибки во время обработки запроса выражение XPath. В Выберите метод и Компиляция метод XPathNavigator класс может вызывать XPathException.

Создание образца XML-документов

Чтобы создать два примера XML-документов для использования с последующей.NET пример кода, выполните следующие действия:
  1. Использование программы «Блокнот» или аналогичном текстовом редакторе вставьте следующий код в новый документ XML с именем Books.xml. Сохраните документ в корневой папке на жестком диске.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. Использование программы «Блокнот» или аналогичном текстовом редакторе вставьте следующий код в новый документ XML с именем DotNetBooks.xml. Сохраните документ в корневой папке на жестком диске.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Создайте Visual Basic.NET проект

  1. Запустите Visual Studio.NET, а затем создайте новый проект Visual Basic.Проект приложения Windows NET.
  2. Перетащите два Кнопка элементы управления из панели элементов в форму Form1.vb.
  3. Вставьте следующий код в Click_Event процедура первой кнопки:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. Чтение встроенных комментариев понять функциональные возможности кода. Обратите особое внимание на как код создает и использует объект экземпляров каждого класса в System.XML.XPath пространство имен. Обратите внимание, что строка задает параметр выражения запроса XPath в вызове Выберите метод XPathNavigator объект.
  5. Вставьте следующий код в Click_Event процедура второй кнопки:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. Чтение встроенных комментариев понять функциональные возможности кода. Обратите особое внимание на как пример кода создает экземпляр XPathExpression объект впервые (против Books.xml), а затем повторно использует объект при выполнении запроса XPath во второй раз (от DotNetBooks.xml).

Тестирование проекта

  1. Сохраните изменения в Visual Basic.NET и затем выполнить проект.
  2. Когда появится форма, нажмите кнопку первой кнопки для выполнения кода, использующего строку для указания выражения запроса XPath. Вывод указанного запроса XPath относительно Books.xml выглядит следующим образом:
    XML Step by Step
    Developing XML solutions
    					
  3. Щелкните второй кнопки, чтобы выполнить код, использующий XPathExpression Объект, чтобы указать выражение запроса XPath. Вывод указанного запроса XPath относительно Books.xml и DotNetBooks.xml выглядит следующим образом:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Свойства

Код статьи: 317069 - Последний отзыв: 7 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
Ключевые слова: 
kbhowtomaster kbmt KB317069 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:317069

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com