XPathNavigator.Select Метод

Определение

Выбирает набор узлов, используя указанное выражение XPath.

Перегрузки

Имя Описание
Select(String)

Выбирает набор узлов, используя указанное выражение XPath.

Select(XPathExpression)

Выбирает набор узлов с помощью указанного XPathExpression.

Select(String, IXmlNamespaceResolver)

Выбирает набор узлов с помощью указанного IXmlNamespaceResolver выражения XPath с объектом, указанным для разрешения префиксов пространства имен.

Select(String)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Выбирает набор узлов, используя указанное выражение XPath.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::String ^ xpath);
public virtual System.Xml.XPath.XPathNodeIterator Select(string xpath);
abstract member Select : string -> System.Xml.XPath.XPathNodeIterator
override this.Select : string -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (xpath As String) As XPathNodeIterator

Параметры

xpath
String

Выражение String XPath.

Возвращаемое значение

Указатель XPathNodeIterator на выбранный набор узлов.

Исключения

Выражение XPath содержит ошибку или его тип возврата не является набором узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере метод используется Select для выбора набора узлов.

XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("/bookstore/book");
nodes.MoveNext();
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
    Console.WriteLine(nodesText.Current.Value);
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")
nodes.MoveNext()
Dim nodesNavigator As XPathNavigator = nodes.Current

Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

While nodesText.MoveNext()
    Console.WriteLine(nodesText.Current.Value)
End While

Пример принимает books.xml файл в качестве входных данных.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Комментарии

Контекст выделения — это положение XPathNavigator при вызове этого метода. После вызова этого метода XPathNodeIterator возвращенный представляет набор выбранных узлов. Используйте MoveNext метод XPathNodeIterator итерации по выбранному набору узлов.

Следующий код C# выполняет итерацию по выбранному набору узлов.

XPathNodeIterator iterator = nav.Select("/bookstore/book");
while (iterator.MoveNext())
{
    Console.WriteLine(Iterator.Current.Name);
}

Ниже приведены важные заметки, которые следует учитывать при использовании Select метода.

  • Для перемещения в пределах XPathNavigatorобъекта по-прежнему можно использовать любой из XPathNavigator методов навигации объекта. Методы XPathNavigator навигации не зависят от выбранных узлов в .XPathNodeIterator

  • Будущие вызовы Select метода возвращают новый XPathNodeIterator объект, указывающий на выбранный набор узлов, который соответствует новому Select вызову. Эти два XPathNodeIterator объекта полностью независимы друг от друга.

  • Если для выражения XPath требуется разрешение пространства имен, используйте перегрузку Select , которая принимает XPathExpression его аргумент.

  • Этот метод не влияет на состояние XPathNavigatorобъекта .

См. также раздел

Применяется к

Select(XPathExpression)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Выбирает набор узлов с помощью указанного XPathExpression.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::Xml::XPath::XPathExpression ^ expr);
public virtual System.Xml.XPath.XPathNodeIterator Select(System.Xml.XPath.XPathExpression expr);
abstract member Select : System.Xml.XPath.XPathExpression -> System.Xml.XPath.XPathNodeIterator
override this.Select : System.Xml.XPath.XPathExpression -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (expr As XPathExpression) As XPathNodeIterator

Параметры

expr
XPathExpression

XPathExpression Объект, содержащий скомпилированный запрос XPath.

Возвращаемое значение

Указывает XPathNodeIterator на выбранный набор узлов.

Исключения

Выражение XPath содержит ошибку или его тип возврата не является набором узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере метод используется Select для выбора набора узлов.

XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathExpression query = navigator.Compile("/bookstore/book");
XPathNodeIterator nodes = navigator.Select(query);
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
{
    Console.WriteLine(nodesText.Current.Value);
}
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim query As XPathExpression = navigator.Compile("/bookstore/book")
Dim nodes As XPathNodeIterator = navigator.Select(query)
Dim nodesNavigator As XPathNavigator = nodes.Current

Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

While nodesText.MoveNext()
    Console.WriteLine(nodesText.Current.Value)
End While

Пример принимает books.xml файл в качестве входных данных.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Комментарии

Контекст выделения — это позиция XPathNavigator при вызове этого метода. После вызова этого метода возвращенный XPathNodeIterator представляет набор выбранных узлов. Используйте MoveNext для XPathNodeIterator итерации по выбранному набору узлов.

Следующий код C# выполняет итерацию по выбранному набору узлов.

XPathNodeIterator ni = nav.Select(expr);
while (ni.MoveNext())
{
    Console.WriteLine(ni.Current.Name);
}

Ниже приведены важные заметки, которые следует учитывать при использовании Select метода.

  • Для перемещения в пределах XPathNavigatorобъекта по-прежнему можно использовать любой из XPathNavigator методов навигации объекта. Методы XPathNavigator навигации не зависят от выбранных узлов в .XPathNodeIterator

  • Будущие вызовы Select метода возвращают новый XPathNodeIterator объект, указывающий на выбранный набор узлов, который соответствует новому Select вызову. Эти два XPathNodeIterator объекта полностью независимы друг от друга.

  • XPathExpression Если требуется разрешение пространства имен, необходимо добавить XmlNamespaceManagerв него префикс и пару URI пространства имен, а SetContext метод должен быть вызван для указания используемого XmlNamespaceManager для разрешения пространства имен.

Например, предположим, что документ содержит следующие XML-узлы.

<bookstore xmlns:bk='urn:samples'>
    <book bk:ISBN='1-325-0980'>
        <title>Pride And Prejudice</title>
    </book>
</bookstore>

В этом случае следующий код C# выбирает bk:ISBN узел.

XPathExpression expr = nav.Compile("book/@bk:ISBN");
XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable());
mngr.AddNamespace("bk","urn:samples");
expr.SetContext(mngr);
XPathNodeIterator ni = nav.Select(expr);

Note

XPathExpression Если префикс не содержит префикс, предполагается, что URI пространства имен является пустым пространством имен. Если XML включает пространство имен по умолчанию, необходимо по-прежнему использовать SetContext метод и указать XmlNamespaceManager , который содержит префикс и URI пространства имен для обработки пространства имен по умолчанию.

Например, предположим, что у вас есть следующий XML-код.

<bookstore xmlns="http://www.lucernepublishing.com">
    <book>
        <title>Pride And Prejudice</title>
    </book>
</bookstore>

В этом случае следующий код C# выбирает все узлы книги:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(nav.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XPathExpression expr;
expr = nav.Compile("//ab:book");
expr.SetContext(nsmgr);
XPathNodeIterator ni = nav.Select(expr);

Этот метод не влияет на состояние XPathNavigatorобъекта .

См. также раздел

Применяется к

Select(String, IXmlNamespaceResolver)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Выбирает набор узлов с помощью указанного IXmlNamespaceResolver выражения XPath с объектом, указанным для разрешения префиксов пространства имен.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::String ^ xpath, System::Xml::IXmlNamespaceResolver ^ resolver);
public virtual System.Xml.XPath.XPathNodeIterator Select(string xpath, System.Xml.IXmlNamespaceResolver? resolver);
public virtual System.Xml.XPath.XPathNodeIterator Select(string xpath, System.Xml.IXmlNamespaceResolver resolver);
abstract member Select : string * System.Xml.IXmlNamespaceResolver -> System.Xml.XPath.XPathNodeIterator
override this.Select : string * System.Xml.IXmlNamespaceResolver -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (xpath As String, resolver As IXmlNamespaceResolver) As XPathNodeIterator

Параметры

xpath
String

Выражение String XPath.

resolver
IXmlNamespaceResolver

Объект, используемый IXmlNamespaceResolver для разрешения префиксов пространства имен.

Возвращаемое значение

Указывает XPathNodeIterator на выбранный набор узлов.

Исключения

Выражение XPath содержит ошибку или его тип возврата не является набором узлов.

Недопустимое выражение XPath.

Примеры

В следующем примере показано, как выбрать набор узлов с помощью Select метода с объектом, XmlNamespaceManager указанным для разрешения префиксов пространства имен в выражении XPath.

XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");

XPathNodeIterator nodes = navigator.Select("/bk:bookstore/bk:book/bk:price", manager);
// Move to the first node bk:price node
if(nodes.MoveNext())
{
    // now nodes.Current points to the first selected node
    XPathNavigator nodesNavigator = nodes.Current;

    //select all the descendants of the current price node
    XPathNodeIterator nodesText =
       nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

    while(nodesText.MoveNext())
    {
       Console.WriteLine(nodesText.Current.Value);
    }
}
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")

Dim nodes As XPathNodeIterator = navigator.Select("/bk:bookstore/bk:book/bk:price", manager)
' Move to the first node bk:price node.
If (nodes.MoveNext()) Then
    ' Now nodes.Current points to the first selected node.
    Dim nodesNavigator As XPathNavigator = nodes.Current

    ' Select all the descendants of the current price node.
    Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

    While nodesText.MoveNext()
        Console.WriteLine(nodesText.Current.Value)
    End While
End If

Пример принимает contosoBooks.xml файл в качестве входных данных.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Применяется к