SelectNodes

CompositeNode.SelectNodes method

Väljer en lista med noder som matchar XPath-uttrycket.

public NodeList SelectNodes(string xpath)
ParameterTypBeskrivning
xpathStringXPath-uttrycket.

Returvärde

En lista över noder som matchar XPath-frågan.

Anmärkningar

Endast uttryck med elementnamn stöds för tillfället. Expressions som använder attributnamn stöds inte.

Exempel

Visar hur man använder ett XPath-uttryck för att testa om en nod finns i ett fält.

Document doc = new Document(MyDir + "Mail merge destination - Northwind employees.docx");

// NodeList som resulterar från detta XPath-uttryck kommer att innehålla alla noder vi hittar i ett fält.
// FieldStart- och FieldEnd-noder kan dock finnas på listan om det finns kapslade fält i sökvägen.
// Hittar för närvarande inte sällsynta fält där FieldCode eller FieldResult sträcker sig över flera stycken.
NodeList resultList =
    doc.SelectNodes("//FieldStart/following-sibling::node()[following-sibling::FieldEnd]");

// Kontrollera om den angivna körningen är en av noderna som finns inne i fältet.
Console.WriteLine($"Contents of the first Run node that's part of a field: {resultList.First(n => n.NodeType == NodeType.Run).GetText().Trim()}");

Visar hur man väljer vissa noder med hjälp av ett XPath-uttryck.

Document doc = new Document(MyDir + "Tables.docx");

// Detta uttryck extraherar alla styckenoder,
// som är ättlingar till valfri tabellnod i dokumentet.
NodeList nodeList = doc.SelectNodes("//Tabell//Paragraph");

// Iterera genom listan med en uppräkning och skriv ut innehållet i varje stycke i varje cell i tabellen.
int index = 0;

using (IEnumerator<Node> e = nodeList.GetEnumerator())
    while (e.MoveNext())
        Console.WriteLine($"Table paragraph index {index++}, contents: \"{e.Current.GetText().Trim()}\"");

// Detta uttryck kommer att välja alla stycken som är direkta underordnade av någon Kroppsnod i dokumentet.
nodeList = doc.SelectNodes("//Body/Paragraph");

// Vi kan behandla listan som en array.
Assert.AreEqual(4, nodeList.ToArray().Length);

// Använd SelectSingleNode för att välja det första resultatet av samma uttryck som ovan.
Node node = doc.SelectSingleNode("//Body/Paragraph");

Assert.AreEqual(typeof(Paragraph), node.GetType());

Se även