使用 XPathNavigator 選取 XML 資料
XPathNavigator 類別提供一組方法,可以使用 XPath 運算式選取 XPathDocument 或 XmlDocument 物件中的一組節點。 一旦選取,即可重複處理已選取的節點集。
XPathNavigator 選取方法
XPathNavigator 類別提供一組方法,可以使用 XPath 運算式選取 XPathDocument 或 XmlDocument 物件中的一組節點。 XPathNavigator 類別也提供了一組最佳化方法,可以選取上階節點、子節點及子代節點,其速度比使用 XPath 運算式快。 若為選取的單一節點,會在 XPathNodeIterator 物件或 XPathNavigator 物件中傳回已選取的節點集。
使用 XPath 運算式選取節點
若要使用 XPath 運算式來選取一組節點,請使用下列其中一種選取方法。
呼叫時,這些方法會傳回一組節點,您可以使用 XPathNodeIterator 物件或 XPathNavigator 物件 (若為選取的單一節點) 來隨意巡覽這些節點。
使用 XPathNodeIterator 物件來巡覽不會影響用於建立它之 XPathNavigator 物件的位置。 從 XPathNavigator 方法傳回的 SelectSingleNode 物件會置於傳回的單一節點上,而且也不會影響用來建立它之 XPathNavigator 物件的位置。
下列範例顯示如何從 XPathNavigator 物件建立 XPathDocument 物件、如何使用 Select 方法來選取 XPathDocument 物件中的節點,以及如何使用 XPathNodeIterator 物件來重複處理已選取的節點。
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")
While nodes.MoveNext()
Console.WriteLine(nodes.Current.Name)
End While
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodes = navigator.Select("/bookstore/book");
while(nodes.MoveNext())
{
Console.WriteLine(nodes.Current.Name);
}
該範例採用 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>
最佳化選取方法
SelectChildren 類別的 SelectAncestors、SelectDescendants 及 XPathNavigator 方法表示一般用來擷取子節點、子代節點及上階節點的 XPath 運算式。 這些方法已針對效能最佳化,而且速度比其相對應的 XPath 運算式快。 SelectChildren、SelectAncestors 及 SelectDescendants 方法會依據 XPathNodeType 值或要選取之節點的區域名稱及命名空間 URI,來選取上階節點、子節點及子代節點。 選取的上階節點、子節點及子代節點會在 XPathNodeIterator 物件中傳回。