XmlNode.SelectNodes Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Seleciona uma lista de nós que correspondem à expressão XPath.
Sobrecargas
| Name | Description |
|---|---|
| SelectNodes(String) |
Seleciona uma lista de nós que correspondem à expressão XPath. |
| SelectNodes(String, XmlNamespaceManager) |
Seleciona uma lista de nós que correspondem à expressão XPath. Quaisquer prefixos encontrados na expressão XPath são resolvidos usando o .XmlNamespaceManager |
Observações
As expressões XPath podem incluir namespaces. A resolução do espaço de nomes é suportada usando o XmlNamespaceManager. Se a expressão XPath incluir um prefixo, o par de URI do prefixo e do namespace deve ser adicionado ao XmlNamespaceManager.
Note
Se a expressão XPath não incluir um prefixo, assume-se que o URI do namespace é o namespace vazio. Se o seu XML incluir um namespace predefinido, deve ainda adicionar um prefixo e um URI de namespace ao XmlNamespaceManager; caso contrário, não terá nenhum nó selecionado.
Para obter mais informações, consulte Selecionar nós usando a navegação XPath. Para exemplos de código, escolha uma sobrecarga da lista de sobrecarga na secção anterior.
SelectNodes(String)
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
Seleciona uma lista de nós que correspondem à expressão XPath.
public:
System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath);
public System.Xml.XmlNodeList? SelectNodes(string xpath);
public System.Xml.XmlNodeList SelectNodes(string xpath);
member this.SelectNodes : string -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String) As XmlNodeList
Parâmetros
- xpath
- String
A expressão XPath.
Devoluções
An contendo uma coleção de nós que XmlNodeList correspondem à consulta XPath.
Exceções
A expressão XPath contém um prefixo. Veja exemplos de XPath.
Exemplos
O exemplo seguinte seleciona todos os livros cujo apelido do autor é Austen, e depois altera o preço desses livros.
using System;
using System.Xml;
public class Sample6
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
XmlNodeList nodeList;
XmlNode root = doc.DocumentElement;
nodeList = root.SelectNodes("descendant::book[author/last-name='Austen']");
//Change the price on the books.
foreach (XmlNode book in nodeList)
{
book.LastChild.InnerText = "15.95";
}
Console.WriteLine("Display the modified XML document....");
doc.Save(Console.Out);
}
}
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
'Create the XmlDocument.
Dim doc as XmlDocument = new XmlDocument()
doc.Load("booksort.xml")
Dim book as XmlNode
Dim nodeList as XmlNodeList
Dim root as XmlNode = doc.DocumentElement
nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']")
'Change the price on the books.
for each book in nodeList
book.LastChild.InnerText="15.95"
next
Console.WriteLine("Display the modified XML document....")
doc.Save(Console.Out)
end sub
end class
Este exemplo utiliza o seguinte XML:
<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
<title>Pride And Prejudice</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>24.95</price>
</book>
<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>29.95</price>
</book>
<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
<title>Emma</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
<title>Sense and Sensibility</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
</bookstore>
Observações
Se a expressão XPath exigir resolução de namespace, deve usar a SelectNodes sobrecarga que toma a XmlNamespaceManager como argumento. O XmlNamespaceManager é usado para resolver namespaces.
Note
Se a expressão XPath não incluir um prefixo, assume-se que o URI do namespace é o namespace vazio. Se o seu XML incluir um namespace por defeito, deve continuar a usar e XmlNamespaceManager adicionar um prefixo e um URI de namespace; caso contrário, não será selecionado nenhum nó. Para obter mais informações, consulte Selecionar nós usando a navegação XPath.
Note
Um problema comum ao formular expressões XPath é como incluir uma aspas simples (') ou dupla aspas (") na expressão. Se tiver de procurar um valor que inclua uma única citação, deve incluir a cadeia entre aspas duplas. Se precisar de procurar um valor que inclua uma citação dupla, deve incluir a cadeia entre aspas simples.
Por exemplo, suponha que você tenha o seguinte XML:
<bookstore>
<book>
<title>'Emma'</title>
</book>
</bookstore>
O seguinte código do Visual Basic seleciona um elemento que contém aspas simples:
nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")
Este método é uma extensão da Microsoft para o Document Object Model (DOM).
O XmlNodeList objeto devolvido por este método será válido enquanto o documento subjacente permanecer inalterado. Se o documento subjacente mudar, podem ser devolvidos resultados inesperados (não será feita exceção).
Ver também
- SelectSingleNode(String)
- Seleções XPath e Funções Personalizadas, e Muito Mais
- Recomendação W3C XPath 1.0
Aplica-se a
SelectNodes(String, XmlNamespaceManager)
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
- Origem:
- XmlNode.cs
Seleciona uma lista de nós que correspondem à expressão XPath. Quaisquer prefixos encontrados na expressão XPath são resolvidos usando o .XmlNamespaceManager
public:
System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath, System::Xml::XmlNamespaceManager ^ nsmgr);
public System.Xml.XmlNodeList? SelectNodes(string xpath, System.Xml.XmlNamespaceManager nsmgr);
public System.Xml.XmlNodeList SelectNodes(string xpath, System.Xml.XmlNamespaceManager nsmgr);
member this.SelectNodes : string * System.Xml.XmlNamespaceManager -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String, nsmgr As XmlNamespaceManager) As XmlNodeList
Parâmetros
- xpath
- String
A expressão XPath. Veja exemplos de XPath.
- nsmgr
- XmlNamespaceManager
E XmlNamespaceManager para usar na resolução de namespaces para prefixos na expressão XPath.
Devoluções
An contendo uma coleção de nós que XmlNodeList correspondem à consulta XPath.
Exceções
A expressão XPath contém um prefixo que não está definido no XmlNamespaceManager.
Exemplos
O exemplo seguinte mostra os valores de cada um dos atributos ISBN. Este exemplo usa um XmlElement objeto, que herda da XmlNode classe.
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
//Create an XmlNamespaceManager for resolving namespaces.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "urn:samples");
//Select and display the value of all the ISBN attributes.
XmlNodeList nodeList;
XmlElement root = doc.DocumentElement;
nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);
foreach (XmlNode isbn in nodeList){
Console.WriteLine(isbn.Value);
}
}
}
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
Dim doc as XmlDocument = new XmlDocument()
doc.Load("booksort.xml")
'Create an XmlNamespaceManager for resolving namespaces.
Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("bk", "urn:samples")
'Select and display the value of all the ISBN attributes.
Dim nodeList as XmlNodeList
Dim root as XmlElement = doc.DocumentElement
nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr)
Dim isbn as XmlNode
for each isbn in nodeList
Console.WriteLine(isbn.Value)
next
end sub
end class
O exemplo usa o ficheiro , booksort.xmlcomo entrada.
<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
<title>Pride And Prejudice</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>24.95</price>
</book>
<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>29.95</price>
</book>
<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
<title>Emma</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
<title>Sense and Sensibility</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
</bookstore>
Observações
As expressões XPath podem incluir namespaces. A resolução do espaço de nomes é suportada usando o XmlNamespaceManager. Se a expressão XPath incluir um prefixo, o par de URI do prefixo e do namespace deve ser adicionado ao XmlNamespaceManager.
Note
Se a expressão XPath não incluir um prefixo, assume-se que o URI do namespace é o namespace vazio. Se o seu XML incluir um namespace predefinido, deve ainda adicionar um prefixo e um URI de namespace ao XmlNamespaceManager; caso contrário, não terá nenhum nó selecionado. Para obter mais informações, consulte Selecionar nós usando a navegação XPath.
Por exemplo, se tivesse o seguinte XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
O seguinte código C# seleciona todos os nós livro:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);
Note
Um problema comum ao formular expressões XPath é como incluir uma aspas simples (') ou dupla aspas (") na expressão. Se tiver de procurar um valor que inclua uma única citação, deve incluir a cadeia entre aspas duplas. Se precisar de procurar um valor que inclua uma citação dupla, deve incluir a cadeia entre aspas simples.
Por exemplo, suponha que você tenha o seguinte XML:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>'Emma'</title>
</book>
</bookstore>
O seguinte código do Visual Basic seleciona um elemento que contém aspas simples:
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")
nodeList = root.SelectNodes("//ab:book[contains(ab:title,""'Emma'"")]", nsmgr)
Este método é uma extensão da Microsoft para o Document Object Model (DOM).
O XmlNodeList objeto devolvido por este método será válido enquanto o documento subjacente permanecer inalterado. Se o documento subjacente mudar, podem ser devolvidos resultados inesperados (não será feita exceção).