SelectNodes

CompositeNode.SelectNodes method

Selecciona una lista de nodos que coinciden con la expresión XPath.

public NodeList SelectNodes(string xpath)
ParámetroEscribeDescripción
xpathStringLa expresión XPath.

Valor_devuelto

Una lista de nodos que coinciden con la consulta XPath.

Observaciones

Por el momento, solo se admiten expresiones con nombres de elementos. No se admiten expresiones que utilizan nombres de atributos.

Ejemplos

Muestra cómo utilizar una expresión XPath para comprobar si un nodo está dentro de un campo.

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

// La NodeList que resulta de esta expresión XPath contendrá todos los nodos que encontremos dentro de un campo.
// Sin embargo, los nodos FieldStart y FieldEnd pueden estar en la lista si hay campos anidados en la ruta.
// Actualmente no encuentra campos raros en los que FieldCode o FieldResult abarquen varios párrafos.
NodeList resultList =
    doc.SelectNodes("//FieldStart/siguiente-hermano::nodo()[siguiente-hermano::FieldEnd]");

// Comprobar si la ejecución especificada es uno de los nodos que están dentro del campo.
Console.WriteLine($"Contents of the first Run node that's part of a field: {resultList.First(n => n.NodeType == NodeType.Run).GetText().Trim()}");

Muestra cómo seleccionar ciertos nodos mediante una expresión XPath.

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

// Esta expresión extraerá todos los nodos de párrafo,
// que son descendientes de cualquier nodo de tabla en el documento.
NodeList nodeList = doc.SelectNodes("//Tabla//Párrafo");

// Recorre la lista con un enumerador e imprime el contenido de cada párrafo en cada celda de la tabla.
int index = 0;

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

// Esta expresión seleccionará cualquier párrafo que sea hijo directo de cualquier nodo Cuerpo del documento.
nodeList = doc.SelectNodes("//Cuerpo del párrafo");

// Podemos tratar la lista como una matriz.
Assert.AreEqual(4, nodeList.ToArray().Length);

// Utilice SelectSingleNode para seleccionar el primer resultado de la misma expresión anterior.
Node node = doc.SelectSingleNode("//Cuerpo del párrafo");

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

Ver también